diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 65658c5fda..bad77bf4ab 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,3 +1,5 @@ +Did you run `make format && make check`? + Fixes # Changes: diff --git a/.gitignore b/.gitignore index 00797ac1df..fcedb461fb 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ *.test *.out .DS_Store +*.pem .idea/ @@ -13,11 +14,14 @@ /apps/ /skywire/ /local* +/transport_logs +/dmsgpty pkg/visor/apps/ pkg/visor/bar/ pkg/visor/foo/ +/bin /node /users.db /hypervisor @@ -28,7 +32,25 @@ pkg/visor/foo/ /*.json /*.sh /*.log -dmsgpty # Ignore backup go.mod after running '/ci_scripts/go_mod_replace.sh'. go.mod-e + +# goreleaser and frontend builds +dist + +# release +*.deb + +# android +cmd/skywirevisormobile/android/app/build/outputs/apk/debug/app-debug.apk +cmd/skywirevisormobile/android/app/skywire.aar +cmd/skywirevisormobile/android/app/skywire-sources.jar +cmd/skywirevisormobile/android/app/.idea +cmd/skywirevisormobile/android/app/build +cmd/skywirevisormobile/android/.gradle +cmd/skywirevisormobile/android/local.properties + +static/skywire-manager-src/dist/* + +/visor/ diff --git a/.golangci.yml b/.golangci.yml index 2375e6c8a4..f83a369b7f 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -145,11 +145,13 @@ linters-settings: simple: true range-loops: true # Report preallocation suggestions on range loops, true by default for-loops: false # Report preallocation suggestions on for loops, false by default + goimports: + local-prefixes: github.com/skycoin/skywire linters: enable: - - golint + - revive - goimports - varcheck - unparam diff --git a/.goreleaser.yml b/.goreleaser.yml new file mode 100644 index 0000000000..8ec4899bfb --- /dev/null +++ b/.goreleaser.yml @@ -0,0 +1,185 @@ +# This is an example goreleaser.yaml file with some sane defaults. +# Make sure to check the documentation at http://goreleaser.com + +release: + # Repo in which the release will be created. + # Default is extracted from the origin remote URL or empty if its private hosted. + # Note: it can only be one: either github or gitlab or gitea + github: + owner: skycoin + name: skywire + + draft: true + +before: + hooks: + - go mod tidy +builds: + - id: skywire-visor + binary: skywire-visor + goos: + - linux + - darwin + goarch: + - amd64 + - 386 + - arm64 + - arm + goarm: + - 6 + - 7 + ignore: + - goos: darwin + goarch: 386 + - goos: darwin + goarch: arm64 + env: + - CGO_ENABLED=0 + main: ./cmd/skywire-visor/ + ldflags: -s -w -X github.com/skycoin/dmsg/buildinfo.version={{.Version}} -X github.com/skycoin/dmsg/buildinfo.commit={{.ShortCommit}} -X github.com/skycoin/dmsg/buildinfo.date={{.Date}} + - id: skywire-cli + binary: skywire-cli + goos: + - linux + - darwin + goarch: + - amd64 + - 386 + - arm64 + - arm + goarm: + - 6 + - 7 + ignore: + - goos: darwin + goarch: 386 + - goos: darwin + goarch: arm64 + env: + - CGO_ENABLED=0 + main: ./cmd/skywire-cli/ + ldflags: -s -w -X github.com/skycoin/dmsg/buildinfo.version={{.Version}} -X github.com/skycoin/dmsg/buildinfo.commit={{.ShortCommit}} -X github.com/skycoin/dmsg/buildinfo.date={{.Date}} + - id: skychat + binary: apps/skychat + goos: + - linux + - darwin + goarch: + - amd64 + - 386 + - arm64 + - arm + goarm: + - 6 + - 7 + ignore: + - goos: darwin + goarch: 386 + - goos: darwin + goarch: arm64 + env: + - CGO_ENABLED=0 + main: ./cmd/apps/skychat/ + ldflags: -s -w -X github.com/skycoin/dmsg/buildinfo.version={{.Version}} -X github.com/skycoin/dmsg/buildinfo.commit={{.ShortCommit}} -X github.com/skycoin/dmsg/buildinfo.date={{.Date}} + - id: skysocks + binary: apps/skysocks + goos: + - linux + - darwin + goarch: + - amd64 + - 386 + - arm64 + - arm + goarm: + - 6 + - 7 + ignore: + - goos: darwin + goarch: 386 + - goos: darwin + goarch: arm64 + env: + - CGO_ENABLED=0 + main: ./cmd/apps/skysocks/ + ldflags: -s -w -X github.com/skycoin/dmsg/buildinfo.version={{.Version}} -X github.com/skycoin/dmsg/buildinfo.commit={{.ShortCommit}} -X github.com/skycoin/dmsg/buildinfo.date={{.Date}} + - id: skysocks-client + binary: apps/skysocks-client + goos: + - linux + - darwin + goarch: + - amd64 + - 386 + - arm64 + - arm + goarm: + - 6 + - 7 + ignore: + - goos: darwin + goarch: 386 + - goos: darwin + goarch: arm64 + env: + - CGO_ENABLED=0 + main: ./cmd/apps/skysocks-client/ + ldflags: -s -w -X github.com/skycoin/dmsg/buildinfo.version={{.Version}} -X github.com/skycoin/dmsg/buildinfo.commit={{.ShortCommit}} -X github.com/skycoin/dmsg/buildinfo.date={{.Date}} + - id: vpn-server + binary: apps/vpn-server + goos: + - linux + - darwin + goarch: + - amd64 + - 386 + - arm64 + - arm + goarm: + - 6 + - 7 + ignore: + - goos: darwin + goarch: 386 + - goos: darwin + goarch: arm64 + env: + - CGO_ENABLED=0 + main: ./cmd/apps/vpn-server/ + ldflags: -s -w -X github.com/skycoin/dmsg/buildinfo.version={{.Version}} -X github.com/skycoin/dmsg/buildinfo.commit={{.ShortCommit}} -X github.com/skycoin/dmsg/buildinfo.date={{.Date}} + - id: vpn-client + binary: apps/vpn-client + goos: + - linux + - darwin + goarch: + - amd64 + - 386 + - arm64 + - arm + goarm: + - 6 + - 7 + ignore: + - goos: darwin + goarch: 386 + - goos: darwin + goarch: arm64 + env: + - CGO_ENABLED=0 + main: ./cmd/apps/vpn-client/ + ldflags: -s -w -X github.com/skycoin/dmsg/buildinfo.version={{.Version}} -X github.com/skycoin/dmsg/buildinfo.commit={{.ShortCommit}} -X github.com/skycoin/dmsg/buildinfo.date={{.Date}} +archives: + - format: tar.gz + wrap_in_directory: false + name_template: 'skywire-v{{ .Version }}-{{ .Os }}-{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}' +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ .Tag }}-next" +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 99aca9f06e..f304f68781 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,54 @@ +sudo: required language: go go: - # - "1.11.x" At minimum the code should run make check on the latest two go versions in the default linux environment provided by Travis. - - "1.12.x" - + # - "1.16.x" At minimum the code should run make check on the latest two go versions in the default linux environment provided by Travis. + - "1.16.x" + dist: xenial +services: + - docker + +addons: + apt: + packages: + # For building MUSL static builds on Linux. + - musl-tools + matrix: include: - os: linux - os: osx # Do not start osx build for PR if: type != pull_request - osx_image: xcode8 + osx_image: xcode8.3 + +before_install: + - nvm install 10.16 install: - - go get -u github.com/FiloSottile/vendorcheck - - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $GOPATH/bin v1.17.1 + - curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $GOPATH/bin v1.40.1 + - make dep before_script: - ci_scripts/create-ip-aliases.sh script: - - make lint - - make test - - make test-no-ci + - make build + - make check + - make install-deps-ui + - make lint-ui + - make build-ui + +deploy: + - provider: script + script: bash ./ci_scripts/docker-push.sh -t "$TRAVIS_BRANCH" -p + on: + branch: master + condition: $TRAVIS_PULL_REQUEST = false + - provider: script + script: bash ./ci_scripts/docker-push.sh -t "$TRAVIS_BRANCH" -p + on: + branch: develop + condition: $TRAVIS_PULL_REQUEST = false + diff --git a/CHANGELOG.md b/CHANGELOG.md index 99e8daa5a8..a82107520d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,22 +4,32 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## [Unreleased] +## 0.2.1 - 2020.04.07 + +### Changed + +- reverted port changes for `skysocks-client` + +## 0.2.0 - 2020.04.02 ### Added -- Retry logic to messaging server for messaging client. +- added `--retain-keys` flag to `skywire-cli visor gen-config` command +- added `--secret-key` flag to `skywire-cli visor gen-config` command +- added hypervisorUI frontend +- added default values for visor if certain fields of config are empty ### Fixed -- Fixed channel collision for messaging clients. +- fixed deployment route finder HTTP request +- fixed /user endpoint not working when auth is disabled ### Changed -- Improve readability of Skywire CLI output. - -## 0.1.0 - 2019.03.04 +- changed port of hypervisorUI and applications +- replaced unix sockets for app to visor communication to tcp sockets +- reverted asynchronous sending of router packets -### Added +## 0.1.0 - 2020.04.02 -- First release of the mainnet Skywire visor and apps for testing. +First release of Skywire Mainnet. diff --git a/CONTRIBUTE.md b/CONTRIBUTE.md deleted file mode 100644 index 2ef2729d01..0000000000 --- a/CONTRIBUTE.md +++ /dev/null @@ -1,9 +0,0 @@ -# How to help: - -Interested developers can help by running the software and using the applications to test the functionality. They can file bug -issues in case something is not working. Bug issues should include a description of the bug, steps to reproduce and should -have [Mainnet] in the title so they can be filtered more easily. We will fix bugs as soon as possible. - -As soon as the documentation is released, we will provide guides on how to help the development of Skywire, whether it is a -new transport implementation or an application developed on Skywire. Bounties will be available for completion of certain -tasks. diff --git a/vendor/github.com/cespare/xxhash/v2/go.sum b/Char similarity index 100% rename from vendor/github.com/cespare/xxhash/v2/go.sum rename to Char diff --git a/Makefile b/Makefile index 496b2c56fa..55ff91f357 100644 --- a/Makefile +++ b/Makefile @@ -1,186 +1,157 @@ .DEFAULT_GOAL := help -.PHONY : check lint install-linters dep test -.PHONY : build clean install format bin -.PHONY : host-apps bin -.PHONY : run stop config -.PHONY : docker-image docker-clean docker-network -.PHONY : docker-apps docker-bin docker-volume -.PHONY : docker-run docker-stop +.PHONY : check lint lint-extra install-linters dep test +.PHONY : build clean install format bin +.PHONY : host-apps bin +.PHONY : docker-image docker-clean docker-network +.PHONY : docker-apps docker-bin docker-volume +.PHONY : docker-run docker-stop + +VERSION := $(shell git describe) +#VERSION := v0.1.0 # for debugging updater + +RFC_3339 := "+%Y-%m-%dT%H:%M:%SZ" +DATE := $(shell date -u $(RFC_3339)) +COMMIT := $(shell git rev-list -1 HEAD) + +PROJECT_BASE := github.com/skycoin/skywire +DMSG_BASE := github.com/skycoin/dmsg OPTS?=GO111MODULE=on -DOCKER_IMAGE?=skywire-runner # docker image to use for running skywire-visor.`golang`, `buildpack-deps:stretch-scm` is OK too -DOCKER_NETWORK?=SKYNET -DOCKER_NODE?=SKY01 -DOCKER_OPTS?=GO111MODULE=on GOOS=linux # go options for compiling for docker container -TEST_OPTS?=-race -tags no_ci -cover -timeout=5m -TEST_OPTS_NOCI?=-race -cover -timeout=5m -v -BUILD_OPTS?= +STATIC_OPTS?= $(OPTS) CC=musl-gcc +MANAGER_UI_DIR = static/skywire-manager-src +MANAGER_UI_BUILT_DIR=cmd/skywire-visor/static + +TEST_OPTS:=-cover -timeout=5m -mod=vendor + +GOARCH:=$(shell go env GOARCH) + +ifneq (,$(findstring 64,$(GOARCH))) + TEST_OPTS:=$(TEST_OPTS) -race +endif + +BUILDINFO_PATH := $(DMSG_BASE)/buildinfo + +BUILDINFO_VERSION := -X $(BUILDINFO_PATH).version=$(VERSION) +BUILDINFO_DATE := -X $(BUILDINFO_PATH).date=$(DATE) +BUILDINFO_COMMIT := -X $(BUILDINFO_PATH).commit=$(COMMIT) + +BUILDINFO?=$(BUILDINFO_VERSION) $(BUILDINFO_DATE) $(BUILDINFO_COMMIT) + +BUILD_OPTS?="-ldflags=$(BUILDINFO)" -mod=vendor $(RACE_FLAG) +BUILD_OPTS_DEPLOY?="-ldflags=$(BUILDINFO) -w -s" check: lint test ## Run linters and tests -build: dep host-apps bin ## Install dependencies, build apps and binaries. `go build` with ${OPTS} +move-built-frontend: + rm -rf ${MANAGER_UI_BUILT_DIR} + mkdir ${MANAGER_UI_BUILT_DIR} + cp -r ${MANAGER_UI_DIR}/dist/. ${MANAGER_UI_BUILT_DIR} -run: stop build config ## Run skywire-visor on host - ./skywire-visor skywire.json +build: host-apps bin ## Install dependencies, build apps and binaries. `go build` with ${OPTS} -stop: ## Stop running skywire-visor on host - -bash -c "kill $$(ps aux |grep '[s]kywire-visor' |awk '{print $$2}')" +build-static: host-apps-static bin-static ## Build apps and binaries. `go build` with ${OPTS} -config: ## Generate skywire.json - -./skywire-cli node gen-config -o ./skywire.json -r +install-generate: ## Installs required execs for go generate. + ${OPTS} go install github.com/mjibson/esc + ${OPTS} go install github.com/vektra/mockery/cmd/mockery + # If the following does not work, you may need to run: + # git config --global url.git@github.com:.insteadOf https://github.com/ + # Source: https://stackoverflow.com/questions/27500861/whats-the-proper-way-to-go-get-a-private-repository + # We are using 'go get' instead of 'go install' here, because we don't have a git tag in which 'readmegen' is already implemented. + ${OPTS} go get -u github.com/SkycoinPro/skywire-services/cmd/readmegen + +generate: ## Generate mocks and config README's + go generate ./... clean: ## Clean project: remove created binaries and apps -rm -rf ./apps - -rm -f ./skywire-visor ./skywire-cli ./setup-node ./hypervisor - -install: ## Install `skywire-visor`, `skywire-cli`, `hypervisor`, `dmsgpty` - ${OPTS} go install ./cmd/skywire-visor ./cmd/skywire-cli ./cmd/setup-node ./cmd/hypervisor ./cmd/dmsgpty + -rm -f ./skywire-visor ./skywire-cli ./setup-node -rerun: stop - ${OPTS} go build -race -o ./skywire-visor ./cmd/skywire-visor - -./skywire-cli node gen-config -o ./skywire.json -r - perl -pi -e 's/localhost//g' ./skywire.json - ./skywire-visor skywire.json +install: ## Install `skywire-visor`, `skywire-cli`, `setup-node` + ${OPTS} go install ${BUILD_OPTS} ./cmd/skywire-visor ./cmd/skywire-cli ./cmd/setup-node +install-static: ## Install `skywire-visor`, `skywire-cli`, `setup-node` + ${STATIC_OPTS} go install -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' ./cmd/skywire-visor ./cmd/skywire-cli ./cmd/setup-node -lint: ## Run linters. Use make install-linters first +lint: ## Run linters. Use make install-linters first ${OPTS} golangci-lint run -c .golangci.yml ./... # The govet version in golangci-lint is out of date and has spurious warnings, run it separately - ${OPTS} go vet -all ./... -vendorcheck: ## Run vendorcheck - GO111MODULE=off vendorcheck ./internal/... - GO111MODULE=off vendorcheck ./pkg/... - GO111MODULE=off vendorcheck ./cmd/apps/... - GO111MODULE=off vendorcheck ./cmd/hypervisor/... - GO111MODULE=off vendorcheck ./cmd/setup-node/... - GO111MODULE=off vendorcheck ./cmd/skywire-cli/... - GO111MODULE=off vendorcheck ./cmd/skywire-visor/... +lint-extra: ## Run linters with extra checks. + ${OPTS} golangci-lint run --no-config --enable-all ./... + # The govet version in golangci-lint is out of date and has spurious warnings, run it separately + ${OPTS} go vet -all ./... test: ## Run tests -go clean -testcache &>/dev/null ${OPTS} go test ${TEST_OPTS} ./internal/... ${OPTS} go test ${TEST_OPTS} ./pkg/... -test-no-ci: ## Run no_ci tests - -go clean -testcache - ${OPTS} go test ${TEST_OPTS_NOCI} ./pkg/transport/... -run "TCP|PubKeyTable" - install-linters: ## Install linters - - VERSION=1.21.0 ./ci_scripts/install-golangci-lint.sh - # GO111MODULE=off go get -u github.com/FiloSottile/vendorcheck - # For some reason this install method is not recommended, see https://github.com/golangci/golangci-lint#install - # However, they suggest `curl ... | bash` which we should not do - # ${OPTS} go get -u github.com/golangci/golangci-lint/cmd/golangci-lint + - VERSION=latest ./ci_scripts/install-golangci-lint.sh ${OPTS} go get -u golang.org/x/tools/cmd/goimports + ${OPTS} go get -u github.com/incu6us/goimports-reviser/v2 -format: ## Formats the code. Must have goimports installed (use make install-linters). - ${OPTS} goimports -w -local github.com/SkycoinProject/skywire ./pkg - ${OPTS} goimports -w -local github.com/SkycoinProject/skywire ./cmd - ${OPTS} goimports -w -local github.com/SkycoinProject/skywire ./internal +tidy: ## Tidies and vendors dependencies. + ${OPTS} go mod tidy -v -dep: ## Sorts dependencies - ${OPTS} go mod vendor -v +format: tidy ## Formats the code. Must have goimports and goimports-reviser installed (use make install-linters). + ${OPTS} goimports -w -local ${PROJECT_BASE} ./pkg + ${OPTS} goimports -w -local ${PROJECT_BASE} ./cmd + ${OPTS} goimports -w -local ${PROJECT_BASE} ./internal + find . -type f -name '*.go' -not -path "./vendor/*" -exec goimports-reviser -project-name ${PROJECT_BASE} -file-path {} \; -# Apps -host-apps: ## Build app - ${OPTS} go build ${BUILD_OPTS} -o ./apps/skychat.v1.0 ./cmd/apps/skychat - ${OPTS} go build ${BUILD_OPTS} -o ./apps/helloworld.v1.0 ./cmd/apps/helloworld - ${OPTS} go build ${BUILD_OPTS} -o ./apps/skysocks.v1.0 ./cmd/apps/skysocks - ${OPTS} go build ${BUILD_OPTS} -o ./apps/skysocks-client.v1.0 ./cmd/apps/skysocks-client +dep: tidy ## Sorts dependencies + ${OPTS} go mod vendor -v -# Bin -bin: ## Build `skywire-visor`, `skywire-cli`, `hypervisor` +host-apps: ## Build app + ${OPTS} go build ${BUILD_OPTS} -o ./apps/skychat ./cmd/apps/skychat + ${OPTS} go build ${BUILD_OPTS} -o ./apps/skysocks ./cmd/apps/skysocks + ${OPTS} go build ${BUILD_OPTS} -o ./apps/skysocks-client ./cmd/apps/skysocks-client + ${OPTS} go build ${BUILD_OPTS} -o ./apps/vpn-server ./cmd/apps/vpn-server + ${OPTS} go build ${BUILD_OPTS} -o ./apps/vpn-client ./cmd/apps/vpn-client + +# Static Apps +host-apps-static: ## Build app + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./apps/skychat ./cmd/apps/skychat + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./apps/skysocks ./cmd/apps/skysocks + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./apps/skysocks-client ./cmd/apps/skysocks-client + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./apps/vpn-server ./cmd/apps/vpn-server + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./apps/vpn-client ./cmd/apps/vpn-client + +# Bin +bin: ## Build `skywire-visor`, `skywire-cli` ${OPTS} go build ${BUILD_OPTS} -o ./skywire-visor ./cmd/skywire-visor ${OPTS} go build ${BUILD_OPTS} -o ./skywire-cli ./cmd/skywire-cli ${OPTS} go build ${BUILD_OPTS} -o ./setup-node ./cmd/setup-node - ${OPTS} go build ${BUILD_OPTS} -o ./dmsg-server ./cmd/dmsg-server - ${OPTS} go build ${BUILD_OPTS} -o ./hypervisor ./cmd/hypervisor - ${OPTS} go build ${BUILD_OPTS} -o ./dmsgpty ./cmd/dmsgpty - -release: ## Build `skywire-visor`, `skywire-cli`, `hypervisor` and apps without -race flag - ${OPTS} go build -o ./skywire-visor ./cmd/skywire-visor - ${OPTS} go build -o ./skywire-cli ./cmd/skywire-cli - ${OPTS} go build -o ./setup-node ./cmd/setup-node - ${OPTS} go build -o ./hypervisor ./cmd/hypervisor - ${OPTS} go build -o ./apps/skychat.v1.0 ./cmd/apps/skychat - ${OPTS} go build -o ./apps/helloworld.v1.0 ./cmd/apps/helloworld - ${OPTS} go build -o ./apps/skysocks.v1.0 ./cmd/apps/skysocks - ${OPTS} go build -o ./apps/skysocks-client.v1.0 ./cmd/apps/skysocks-client - -# Dockerized skywire-visor -docker-image: ## Build docker image `skywire-runner` - docker image build --tag=skywire-runner --rm - < skywire-runner.Dockerfile - -docker-clean: ## Clean docker system: remove container ${DOCKER_NODE} and network ${DOCKER_NETWORK} - -docker network rm ${DOCKER_NETWORK} - -docker container rm --force ${DOCKER_NODE} - -docker-network: ## Create docker network ${DOCKER_NETWORK} - -docker network create ${DOCKER_NETWORK} - -docker-apps: ## Build apps binaries for dockerized skywire-visor. `go build` with ${DOCKER_OPTS} - -${DOCKER_OPTS} go build -race -o ./node/apps/skychat.v1.0 ./cmd/apps/skychat - -${DOCKER_OPTS} go build -race -o ./node/apps/helloworld.v1.0 ./cmd/apps/helloworld - -${DOCKER_OPTS} go build -race -o ./node/apps/skysocks.v1.0 ./cmd/apps/skysocks - -${DOCKER_OPTS} go build -race -o ./node/apps/skysocks-client.v1.0 ./cmd/apps/skysocks-client - -docker-bin: ## Build `skywire-visor`, `skywire-cli`, `hypervisor`. `go build` with ${DOCKER_OPTS} - ${DOCKER_OPTS} go build -race -o ./node/skywire-visor ./cmd/skywire-visor - -docker-volume: dep docker-apps docker-bin bin ## Prepare docker volume for dockerized skywire-visor - -${DOCKER_OPTS} go build -o ./docker/skywire-services/setup-node ./cmd/setup-node - -./skywire-cli node gen-config -o ./skywire-visor/skywire.json -r - perl -pi -e 's/localhost//g' ./node/skywire.json # To make node accessible from outside with skywire-cli - -docker-run: docker-clean docker-image docker-network docker-volume ## Run dockerized skywire-visor ${DOCKER_NODE} in image ${DOCKER_IMAGE} with network ${DOCKER_NETWORK} - docker run -it -v $(shell pwd)/node:/sky --network=${DOCKER_NETWORK} \ - --name=${DOCKER_NODE} ${DOCKER_IMAGE} bash -c "cd /sky && ./skywire-visor skywire.json" - -docker-setup-node: ## Runs setup-node in detached state in ${DOCKER_NETWORK} - -docker container rm setup-node -f - docker run -d --network=${DOCKER_NETWORK} \ - --name=setup-node \ - --hostname=setup-node skywire-services \ - bash -c "./setup-node setup-node.json" - -docker-stop: ## Stop running dockerized skywire-visor ${DOCKER_NODE} - -docker container stop ${DOCKER_NODE} - -docker-rerun: docker-stop - -./skywire-cli gen-config -o ./node/skywire.json -r - perl -pi -e 's/localhost//g' ./node/skywire.json # To make node accessible from outside with skywire-cli - ${DOCKER_OPTS} go build -race -o ./node/skywire-visor ./cmd/skywire-visor - docker container start -i ${DOCKER_NODE} - -run-syslog: ## Run syslog-ng in docker. Logs are mounted under /tmp/syslog - -rm -rf /tmp/syslog - -mkdir -p /tmp/syslog - -docker container rm syslog-ng -f - docker run -d -p 514:514/udp -v /tmp/syslog:/var/log --name syslog-ng balabit/syslog-ng:latest - - -integration-startup: ## Starts up the required transports between `skywire-visor`s of interactive testing environment - ./integration/startup.sh -integration-teardown: ## Tears down all saved configs and states of integration executables - ./integration/tear-down.sh +# Static Bin +bin-static: ## Build `skywire-visor`, `skywire-cli` + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./skywire-visor ./cmd/skywire-visor + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./skywire-cli ./cmd/skywire-cli + ${STATIC_OPTS} go build -trimpath --ldflags '-linkmode external -extldflags "-static" -buildid=' -o ./setup-node ./cmd/setup-node -integration-run-generic: ## Runs the generic interactive testing environment - ./integration/run-generic-env.sh +build-deploy: ## Build for deployment Docker images + ${OPTS} go build -tags netgo ${BUILD_OPTS_DEPLOY} -o /release/skywire-visor ./cmd/skywire-visor + ${OPTS} go build ${BUILD_OPTS_DEPLOY} -o /release/skywire-cli ./cmd/skywire-cli + ${OPTS} go build ${BUILD_OPTS_DEPLOY} -o /release/apps/skychat ./cmd/apps/skychat + ${OPTS} go build ${BUILD_OPTS_DEPLOY} -o /release/apps/skysocks ./cmd/apps/skysocks + ${OPTS} go build ${BUILD_OPTS_DEPLOY} -o /release/apps/skysocks-client ./cmd/apps/skysocks-client -integration-run-messaging: ## Runs the messaging interactive testing environment - ./integration/run-messaging-env.sh +github-release: ## Create a GitHub release + goreleaser --rm-dist -integration-run-proxy: ## Runs the proxy interactive testing environment - ./integration/run-proxy-env.sh +# Manager UI +install-deps-ui: ## Install the UI dependencies + cd $(MANAGER_UI_DIR) && npm ci -mod-comm: ## Comments the 'replace' rule in go.mod - ./ci_scripts/go_mod_replace.sh comment go.mod +lint-ui: ## Lint the UI code + cd $(MANAGER_UI_DIR) && npm run lint -mod-uncomm: ## Uncomments the 'replace' rule in go.mod - ./ci_scripts/go_mod_replace.sh uncomment go.mod +build-ui: install-deps-ui ## Builds the UI + cd $(MANAGER_UI_DIR) && npm run build + mkdir -p ${PWD}/bin + make move-built-frontend help: @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' - diff --git a/README.md b/README.md index beb7d1a8b7..c30cf65b6f 100644 --- a/README.md +++ b/README.md @@ -1,475 +1,114 @@ -[![Build Status](https://travis-ci.com/SkycoinProject/skywire-mainnet.svg?branch=master)](https://travis-ci.com/SkycoinProject/skywire-mainnet) +[![Build Status](https://travis-ci.com/skycoin/skywire.svg?branch=master)](https://travis-ci.com/skycoin/skywire) -# Skywire Mainnet +# Skywire -- [Skywire Mainnet](#skywire-mainnet) - - [Build and run](#build-and-run) - - [Requirements](#requirements) +- [Skywire](#skywire) - [Build](#build) - - [Configure](#configure) - - [`stcp` setup](#stcp-setup) - - [`dmsgpty` setup](#dmsgpty-setup) + - [Configure Skywire](#configure-skywire) + - [Expose hypervisorUI](#expose-hypervisorui) + - [Add remote hypervisor](#add-remote-hypervisor) - [Run `skywire-visor`](#run-skywire-visor) - - [Run `skywire-cli`](#run-skywire-cli) - - [Run `dmsgpty`](#run-dmsgpty) - - [Apps](#apps) - - [Transports](#transports) - - [App programming API](#app-programming-api) - - [Testing](#testing) - - [Testing with default settings](#testing-with-default-settings) - - [Customization with environment variables](#customization-with-environment-variables) - - [$TEST_OPTS](#test_opts) - - [$TEST_LOGGING_LEVEL](#test_logging_level) - - [$SYSLOG_OPTS](#syslog_opts) - - [Running skywire in docker containers](#running-skywire-in-docker-containers) - - [Run dockerized `skywire-visor`](#run-dockerized-skywire-visor) - - [Structure of `./node`](#structure-of-node) - - [Refresh and restart `SKY01`](#refresh-and-restart-sky01) - - [Customization of dockers](#customization-of-dockers) - - [1. DOCKER_IMAGE](#1-docker_image) - - [2. DOCKER_NETWORK](#2-docker_network) - - [3. DOCKER_NODE](#3-docker_node) - - [4. DOCKER_OPTS](#4-docker_opts) - - [Dockerized `skywire-visor` recipes](#dockerized-skywire-visor-recipes) - - [1. Get Public Key of docker-node](#1-get-public-key-of-docker-node) - - [2. Get an IP of node](#2-get-an-ip-of-node) - - [3. Open in browser containerized `skychat` application](#3-open-in-browser-containerized-skychat-application) - - [4. Create new dockerized `skywire-visor`s](#4-create-new-dockerized-skywire-visors) - - [5. Env-vars for development-/testing- purposes](#5-env-vars-for-development-testing--purposes) - - [6. "Hello-Mike-Hello-Joe" test](#6-hello-mike-hello-joe-test) - -**NOTE:** The project is still under heavy development and should only be used for testing purposes right now. Miners should not switch over to this project if they want to receive testnet rewards. - -## Build and run - -### Requirements - -Skywire requires a version of [golang](https://golang.org/) with [go modules](https://github.com/golang/go/wiki/Modules) support. - -### Build + - [Using the Skywire VPN](#using-the-skywire-vpn) + - [Creating a GitHub release](#creating-a-github-release) + - [How to create a GitHub release](#how-to-create-a-github-release) -```bash -# Clone. -$ git clone https://github.com/SkycoinProject/skywire-mainnet.git -$ cd skywire-mainnet - -# Build. -$ make build # installs all dependencies, build binaries and skywire apps - -# Install skywire-visor, skywire-cli, dmsgpty, hypervisor and app CLI execs. -$ make install -``` - -**Note: Environment variable OPTS** - -Build can be customized with environment variable `OPTS` with default value `GO111MODULE=on` - -E.g. - -```bash -$ export OPTS="GO111MODULE=on GOOS=darwin" -$ make -# or -$ OPTS="GSO111MODULE=on GOOS=linux GOARCH=arm" make -``` - -### Configure - -The configuration file provides the configuration for `skywire-visor`. It is a text file in JSON format. - -You can generate a default configuration file by running: - -```bash -$ skywire-cli node gen-config -``` - -Additional options are displayed when `skywire-cli node gen-config -h` is run. - -We will cover certain fields of the configuration file below. - -#### `stcp` setup - -With `stcp`, you can establish *skywire transports* to other skywire visors with the `tcp` protocol. - -As visors are identified with public keys and not IP addresses, we need to directly define the associations between IP address and public keys. This is done via the configuration file for `skywire-visor`. - -```json -{ - "stcp": { - "pk_table": { - "024a2dd77de324d543561a6d9e62791723be26ddf6b9587060a10b9ba498e096f1": "127.0.0.1:7031", - "0327396b1241a650163d5bc72a7970f6dfbcca3f3d67ab3b15be9fa5c8da532c08": "127.0.0.1:7032" - }, - "local_address": "127.0.0.1:7033" - } -} -``` - -In the above example, we have two other visors running on localhost (that we wish to connect to via `stcp`). -- The field `stcp.pk_table` holds the associations of `` to `:`. -- The field `stcp.local_address` should only be specified if you want the visor in question to listen for incoming `stcp` connection. - -#### `dmsgpty` setup - -With `dmsgpty`, you can access a remote `pty` on a remote `skywire-visor`. Note that `dmsgpty` can only access remote visors that have a dmsg transport directly established with the client visor. Having a route connecting two visors together does not allow `dmsgpty` to function between the two visors. - -Here is an example configuration for enabling the `dmsgpty` server within `skywire-visor`: - -```json5 -{ - "dmsg_pty": { - - // "port" provides the dmsg port to listen for remote pty requests. - "port": 233, - - // "authorization_file" is the path to a JSON file containing an array of whitelisted public keys. - "authorization_file": "./dmsgpty/whitelist.json", - - // "cli_network" is the network to host the dmsgpty CLI. - "cli_network": "unix", - - // "cli_address" is the address to host the dmsgpty CLI. - "cli_address": "/tmp/dmsgpty.sock" - } -} -``` - -For `dmsgpty` usage, refer to [#run-dmsgpty](#run-dmsgpty). - -### Run `skywire-visor` - -`skywire-visor` hosts apps, proxies app's requests to remote nodes and exposes communication API that apps can use to implement communication protocols. App binaries are spawned by the node, communication between node and app is performed via unix pipes provided on app startup. +## Build -Note that `skywire-visor` requires a valid configuration file in order to execute. +Skywire requires a Golang version of `1.16` or higher. ```bash -# Run skywire-visor. It takes one argument; the path of a configuration file (`skywire-config.json` if unspecified). -$ skywire-visor skywire-config.json -``` - -### Run `skywire-cli` - -The `skywire-cli` tool is used to control the `skywire-visor`. Refer to the help menu for usage: - -```bash -$ skywire-cli -h -``` - -### Run `dmsgpty` - -`dmsgpty` allows the user to access local and remote pty sessions via the `skywire-visor`. To use `dmsgpty`, one needs to have a `skywire-visor` up and running with the `dmsgpty-server` properly configured (as specified here: [#dmsgpty-setup](#dmsgpty-setup)). - -To access a remote pty, the local `skywire-visor` needs to have a direct dmsg transport with the remote visor, and the remote visor needs to have the local visor's public key included in it's dmsgpty whitelist. - -One can add public key entries to the `"authorization_file"` via the following command: - -```bash -$ dmsgpty whitelist-add --pk 0327396b1241a650163d5bc72a7970f6dfbcca3f3d67ab3b15be9fa5c8da532c08 -``` - -To open an interactive pty shell on a remote visor, who's public key is `0327396b1241a650163d5bc72a7970f6dfbcca3f3d67ab3b15be9fa5c8da532c08`, run the following command: - -```bash -$ dmsgpty -a 0327396b1241a650163d5bc72a7970f6dfbcca3f3d67ab3b15be9fa5c8da532c08 -``` - -To open a non-interactive shell and run a command: - -```bash -$ dmsgpty --addr='0327396b1241a650163d5bc72a7970f6dfbcca3f3d67ab3b15be9fa5c8da532c08' --cmd='echo' --arg='hello world' -``` - -### Apps - -After `skywire-visor` is up and running with default environment, default apps are run with the configuration specified in `skywire-config.json`. Refer to the following for usage of the default apps: - -- [Chat](/cmd/apps/skychat) -- [Hello World](/cmd/apps/helloworld) -- [Sky Socks](/cmd/apps/skysocks) ([Client](/cmd/apps/skysocks-client)) - -### Transports - -In order for a local Skywire App to communicate with an App running on a remote Skywire visor, a transport to that remote Skywire visor needs to be established. - -Transports can be established via the `skywire-cli`. - -```bash -# Establish transport to `0276ad1c5e77d7945ad6343a3c36a8014f463653b3375b6e02ebeaa3a21d89e881`. -$ skywire-cli node add-tp 0276ad1c5e77d7945ad6343a3c36a8014f463653b3375b6e02ebeaa3a21d89e881 - -# List established transports. -$ skywire-cli node ls-tp -``` - -## App programming API - -App is a generic binary that can be executed by the node. On app -startup node will open pair of unix pipes that will be used for -communication between app and node. `app` packages exposes -communication API over the pipe. - -```golang -// Config defines configuration parameters for App -&app.Config{AppName: "helloworld", AppVersion: "1.0", ProtocolVersion: "0.0.1"} -// Setup setups app using default pair of pipes -func Setup(config *Config) (*App, error) {} - -// Accept awaits for incoming loop confirmation request from a Node and -// returns net.Conn for a received loop. -func (app *App) Accept() (net.Conn, error) {} - -// Addr implements net.Addr for App connections. -&Addr{PubKey: pk, Port: 12} -// Dial sends create loop request to a Node and returns net.Conn for created loop. -func (app *App) Dial(raddr *Addr) (net.Conn, error) {} - -// Close implements io.Closer for App. -func (app *App) Close() error {} -``` - -## Testing +# Clone. +$ git clone https://github.com/skycoin/skywire.git +$ cd skywire -### Testing with default settings +# Build and Install +$ make build; make install -```bash -$ make test +# OR build docker image +$ ./ci_scripts/docker-push.sh -t $(git rev-parse --abbrev HEAD) -b ``` -### Customization with environment variables - -#### $TEST_OPTS +Skywire can be statically built. For instructions check [the docs](docs/static-builds.md). -Options for `go test` could be customized with $TEST_OPTS variable +## Configure Skywire -E.g. -```bash -$ export TEST_OPTS="-race -tags no_ci -timeout 90s -v" -$ make test -``` - -#### $TEST_LOGGING_LEVEL - -By default all log messages during tests are disabled. -In case of need to turn on log messages it could be achieved by setting $TEST_LOGGING_LEVEL variable - -Possible values: -- "debug" -- "info", "notice" -- "warn", "warning" -- "error" -- "fatal", "critical" -- "panic" - -E.g. -```bash -$ export TEST_LOGGING_LEVEL="info" -$ go clean -testcache || go test ./pkg/transport -v -run ExampleManager_CreateTransport -$ unset TEST_LOGGING_LEVEL -$ go clean -testcache || go test ./pkg/transport -v -``` +### Expose hypervisorUI -#### $SYSLOG_OPTS +In order to expose the hypervisor UI, generate a config file with `--is-hypervisor` flag: -In case of need to collect logs in syslog during integration tests $SYSLOG_OPTS variable can be used. - -E.g. ```bash -$ make run_syslog ## run syslog-ng in docker container with logs mounted to /tmp/syslog -$ export SYSLOG_OPTS='--syslog localhost:514' -$ make integration-run-messaging ## or other integration-run-* goal -$ sudo cat /tmp/syslog/messages ## collected logs from NodeA, NodeB, NodeC instances +$ skywire-cli visor gen-config --is-hypervisor ``` -## Running skywire in docker containers - -There are two make goals for running in development environment dockerized `skywire-visor`. - -### Run dockerized `skywire-visor` +Docker container will create config automatically for you, should you want to run it manually, you can do: ```bash -$ make docker-run +$ docker run --rm -v :/opt/skywire \ + skycoin/skywire:latest skywire-cli gen-config --is-hypervisor ``` -This will: - -- create docker image `skywire-runner` for running `skywire-visor` -- create docker network `SKYNET` (can be customized) -- create docker volume ./node with linux binaries and apps -- create container `SKY01` and starts it (can be customized) - -#### Structure of `./node` - -``` -./node -├── apps # node `apps` compiled with DOCKER_OPTS -│   ├── skychat.v1.0 # -│   ├── helloworld.v1.0 # -│   ├── skysocks-client.v1.0 # -│   └── skysocks.v1.0 # -├── local # **Created inside docker** -│   ├── skychat # according to "local_path" in skywire-config.json -│   └── skysocks # -├── PK # contains public key of node -├── skywire # db & logs. **Created inside docker** -│   ├── routing.db # -│   └── transport_logs # -├── skywire-config.json # config of node -└── skywire-visor # `skywire-visor` binary compiled with DOCKER_OPTS -``` - -Directory `./node` is mounted as docker volume for `skywire-visor` container. - -Inside docker container it is mounted on `/sky` +After starting up the visor, the UI will be exposed by default on `localhost:8000`. -Structure of `./skywire-visor` partially replicates structure of project root directory. +### Add remote hypervisor -Note that files created inside docker container has ownership `root:root`, -so in case you want to `rm -rf ./node` (or other file operations) - you will need `sudo` it. - -Look at "Recipes: Creating new dockerized node" for further details. - -### Refresh and restart `SKY01` +Every visor can be controlled by one or more hypervisors. To allow a hypervisor to access a visor, the PubKey of the +hypervisor needs to be specified in the configuration file. You can add a remote hypervisor to the config with: ```bash -$ make refresh-node +$ skywire-cli visor update-config --hypervisor-pks ``` -This will: - - - stops running node - - recompiles `skywire-visor` for container - - start node again - -### Customization of dockers - -#### 1. DOCKER_IMAGE - -Docker image for running `skywire-visor`. - -Default value: `skywire-runner` (built with `make docker-image`) - -Other images can be used. -E.g. +Or from docker image: ```bash -DOCKER_IMAGE=golang make docker-run #buildpack-deps:stretch-scm is OK too -``` - -#### 2. DOCKER_NETWORK - -Name of virtual network for `skywire-visor` - -Default value: SKYNET - -#### 3. DOCKER_NODE - -Name of container for `skywire-visor` +$ docker run --rm -v :/opt/skywire \ + skycoin/skywire:latest skywire-cli update-config hypervisor-pks -Default value: SKY01 - -#### 4. DOCKER_OPTS - -`go build` options for binaries and apps in container. - -Default value: "GO111MODULE=on GOOS=linux" - -### Dockerized `skywire-visor` recipes - -#### 1. Get Public Key of docker-node - -```bash -$ cat ./node/skywire-config.json|grep static_public_key |cut -d ':' -f2 |tr -d '"'','' ' -# 029be6fa68c13e9222553035cc1636d98fb36a888aa569d9ce8aa58caa2c651b45 ``` -#### 2. Get an IP of node +## Run `skywire-visor` -```bash -$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' SKY01 -# 192.168.112 -``` +`skywire-visor` hosts apps and is an applications gateway to the Skywire network. -#### 3. Open in browser containerized `skychat` application +`skywire-visor` requires a valid configuration to be provided. If you want to run a VPN client locally, run the visor +as `sudo`. ```bash -$ firefox http://$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' SKY01):8000 +$ sudo skywire-visor -c skywire-config.json ``` -#### 4. Create new dockerized `skywire-visor`s - -In case you need more dockerized nodes or maybe it's needed to customize node -let's look how to create new node. +Or from docker image: ```bash -# 1. We need a folder for docker volume -$ mkdir /tmp/SKYNODE -# 2. compile `skywire-visor` -$ GO111MODULE=on GOOS=linux go build -o /tmp/SKYNODE/skywire-visor ./cmd/skywire-visor -# 3. compile apps -$ GO111MODULE=on GOOS=linux go build -o /tmp/SKYNODE/apps/skychat.v1.0 ./cmd/apps/skychat -$ GO111MODULE=on GOOS=linux go build -o /tmp/SKYNODE/apps/helloworld.v1.0 ./cmd/apps/helloworld -$ GO111MODULE=on GOOS=linux go build -o /tmp/SKYNODE/apps/skysocks.v1.0 ./cmd/apps/skysocks -# 4. Create skywire-config.json for node -$ skywire-cli node gen-config -o /tmp/SKYNODE/skywire-config.json -# 2019/03/15 16:43:49 Done! -$ tree /tmp/SKYNODE -# /tmp/SKYNODE -# ├── apps -# │   ├── skychat.v1.0 -# │   ├── helloworld.v1.0 -# │   └── skysocks.v1.0 -# ├── skywire-config.json -# └── skywire-visor -# So far so good. We prepared docker volume. Now we can: -$ docker run -it -v /tmp/SKYNODE:/sky --network=SKYNET --name=SKYNODE skywire-runner bash -c "cd /sky && ./skywire-visor" -# [2019-03-15T13:55:08Z] INFO [messenger]: Opened new link with the server # 02a49bc0aa1b5b78f638e9189be4ed095bac5d6839c828465a8350f80ac07629c0 -# [2019-03-15T13:55:08Z] INFO [messenger]: Updating discovery entry -# [2019-03-15T13:55:10Z] INFO [skywire]: Connected to messaging servers -# [2019-03-15T13:55:10Z] INFO [skywire]: Starting skychat.v1.0 -# [2019-03-15T13:55:10Z] INFO [skywire]: Starting RPC interface on 127.0.0.1:3435 -# [2019-03-15T13:55:10Z] INFO [skywire]: Starting skysocks.v1.0 -# [2019-03-15T13:55:10Z] INFO [skywire]: Starting packet router -# [2019-03-15T13:55:10Z] INFO [router]: Starting router -# [2019-03-15T13:55:10Z] INFO [trmanager]: Starting transport manager -# [2019-03-15T13:55:10Z] INFO [router]: Got new App request with type Init: {"app-name":"skychat",# "app-version":"1.0","protocol-version":"0.0.1"} -# [2019-03-15T13:55:10Z] INFO [router]: Handshaked new connection with the app skychat.v1.0 -# [2019-03-15T13:55:10Z] INFO [skychat.v1.0]: 2019/03/15 13:55:10 Serving HTTP on :8000 -# [2019-03-15T13:55:10Z] INFO [router]: Got new App request with type Init: {"app-name":"skysocks",# "app-version":"1.0","protocol-version":"0.0.1"} -# [2019-03-15T13:55:10Z] INFO [router]: Handshaked new connection with the app skysocks.v1.0 +docker run --rm -p 8000:8000 -v :/opt/skywire --name=skywire skycoin/skywire:latest skywire-visor ``` -Note that in this example docker is running in non-detached mode - it could be useful in some scenarios. +`skywire-visor` can be run on Windows. The setup requires additional setup steps that are specified +in [the docs](docs/windows-setup.md). -Instead of skywire-runner you can use: +### Using the Skywire VPN -- `golang`, `buildpack-deps:stretch-scm` "as is" -- and `debian`, `ubuntu` - after `apt-get install ca-certificates` in them. Look in `skywire-runner.Dockerfile` for example +If you are interested in running the Skywire VPN as either a client or a server, please refer to the following guides: -#### 5. Env-vars for development-/testing- purposes +- [Setup the Skywire VPN](https://github.com/skycoin/skywire/wiki/Setting-up-Skywire-VPN) +- [Setup the Skywire VPN server](https://github.com/skycoin/skywire/wiki/Setting-up-Skywire-VPN-server) -```bash -export SW_NODE_A=127.0.0.1 -export SW_NODE_A_PK=$(cat ./skywire-config.json|grep static_public_key |cut -d ':' -f2 |tr -d '"'','' ') -export SW_NODE_B=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' SKY01) -export SW_NODE_B_PK=$(cat ./node/skywire-config.json|grep static_public_key |cut -d ':' -f2 |tr -d '"'','' ') -``` +## Creating a GitHub release -#### 6. "Hello-Mike-Hello-Joe" test +To maintain actual `skywire-visor` state on users' Skywire nodes we have a mechanism for updating `skywire-visor` +binaries. Binaries for each version are uploaded to [GitHub releases](https://github.com/skycoin/skywire/releases/). We +use [goreleaser](https://goreleaser.com) for creating them. -Idea of test from Erlang classics: +### How to create a GitHub release -```bash -# Setup: run skywire-visors on host and in docker -$ make run -$ make docker-run -# Open in browser skychat application -$ firefox http://$SW_NODE_B:8000 & -# add transport -$ ./skywire-cli add-transport $SW_NODE_B_PK -# "Hello Mike!" - "Hello Joe!" - "System is working!" -$ curl --data {'"recipient":"'$SW_NODE_A_PK'", "message":"Hello Mike!"}' -X POST http://$SW_NODE_B:8000/message -$ curl --data {'"recipient":"'$SW_NODE_B_PK'", "message":"Hello Joe!"}' -X POST http://$SW_NODE_A:8000/message -$ curl --data {'"recipient":"'$SW_NODE_A_PK'", "message":"System is working!"}' -X POST http://$SW_NODE_B:8000/message -# Teardown -$ make stop && make docker-stop -``` +1. Make sure that `git` and [goreleaser](https://goreleaser.com/install) are installed. +2. Checkout to a commit you would like to create a release against. +3. Run `go mod vendor` and `go mod tidy`. +4. Make sure that `git status` is in clean state. Commit all vendor changes and source code changes. +5. Uncomment `draft: true` in `.goreleaser.yml` if this is a test release. +6. Create a `git` tag with desired release version and release name: `git tag -a 0.1.0 -m "First release"`, + where `0.1.0` is release version and `First release` is release name. +5. Push the created tag to the repository: `git push origin 0.1.0`, where `0.1.0` is release version. +6. [Issue a personal GitHub access token.](https://github.com/settings/tokens) +7. Run `GITHUB_TOKEN=your_token make github-release` +8. [Check the created GitHub release.](https://github.com/skycoin/skywire/releases/) diff --git a/ROADMAP.md b/ROADMAP.md deleted file mode 100644 index e7e48f9e6d..0000000000 --- a/ROADMAP.md +++ /dev/null @@ -1,16 +0,0 @@ -# Next steps: - -This document defines a high level roadmap for Skywire mainnet development. It does not commit the development team to deliver the features, since product requirements might change at any time. The items do not appear in a chronological order. - -- [ ] Implement bandwidth settlement system for monetization of network services -- [ ] Integrate Coin Hour Bank / CoinJoin with the settlement system -- [ ] Integrate the new manager interface with the manager backend -- [ ] Add support for remote management of unlimited nodes via messaging system -- [ ] Integrate CXO with Skywire -- [ ] Create service discovery for peer discovery -- [ ] Document the software and provide tutorials and help for developing applications using Skywire and to contribute to the development -- [ ] Integrate Skywire with package manager -- [ ] Implement Store and Forward -- [ ] Implement virtual network adapter -- [ ] create fully functional Skymessenger -- [ ] add further transport implementations (UDP, TCP) diff --git a/ci_scripts/docker-push.sh b/ci_scripts/docker-push.sh new file mode 100755 index 0000000000..3fe49b79f7 --- /dev/null +++ b/ci_scripts/docker-push.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash + +function extra_ldflags() { + local build_dir="github.com/skycoin/dmsg/buildinfo" + local version="$(git describe)" + local commit="$(git rev-parse HEAD)" + local build_date="$(date -u "+%Y-%m-%d%T%H:%M:%SZ")" + echo "-X ${build_dir}.version=${version} -X ${build_dir}.commit=${commit} -X ${build_dir}.date=${build_date}" +} + +function print_usage() { + echo "Use: $0 [-t ] [-p | -b]" + echo "use -p for push (it builds and push the image)" + echo "use -b for build image locally" +} + +if [[ $# -ne 3 ]]; then + print_usage + exit 0 +fi + +function docker_build() { + docker image build \ + --tag=skycoin/skywire:"$tag" \ + --build-arg BUILDINFO_LDFLAGS="$(extra_ldflags)" \ + -f ./docker/images/visor/Dockerfile . +} + +function docker_push() { + docker login -u "$DOCKER_USERNAME" -p "$DOCKER_PASSWORD" + docker tag skycoin/skywire:"$tag" skycoin/skywire:"$tag" + docker image push skycoin/skywire:"$tag" +} + +while getopts ":t:pb" o; do + case "${o}" in + t) + tag="$(echo "${OPTARG}" | tr -d '[:space:]')" + if [[ $tag == "develop" ]]; then + tag="test" + elif [[ $tag == "master" ]]; then + tag="latest" + fi + ;; + p) + docker_build + docker_push + ;; + b) + docker_build + ;; + *) + print_usage + ;; + esac +done diff --git a/ci_scripts/go_mod_replace.sh b/ci_scripts/go_mod_replace.sh index 19557c50fb..b7890cc86b 100755 --- a/ci_scripts/go_mod_replace.sh +++ b/ci_scripts/go_mod_replace.sh @@ -9,7 +9,7 @@ action=$1 filename=$2 # Line to comment/uncomment in go.mod -line="replace github.com\/SkycoinProject\/dmsg => ..\/dmsg" +line="replace github.com\/skycoin\/dmsg => ..\/dmsg" function print_usage() { echo $"Usage: $0 (comment|uncomment) " diff --git a/ci_scripts/install-golangci-lint.sh b/ci_scripts/install-golangci-lint.sh index 1da1b97348..290dd0afe1 100755 --- a/ci_scripts/install-golangci-lint.sh +++ b/ci_scripts/install-golangci-lint.sh @@ -3,11 +3,17 @@ set -e -o pipefail if [[ -z "$VERSION" ]]; then - echo "VERSION must be set" - exit 1 + VERSION="latest" fi +if [[ "$VERSION" != "latest" ]]; then + VERSION="v$VERSION" +fi + +if [[ -z "${GOBIN}" ]]; then export GOBIN=$HOME/go/bin; fi +echo "GOBIN=${GOBIN}" + # In alpine linux (as it does not come with curl by default) -wget -O - -q https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b "$GOPATH/bin" "v$VERSION" +wget -O - -q https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b "${GOBIN}" "${VERSION}" golangci-lint --version diff --git a/ci_scripts/run-internal-tests.sh b/ci_scripts/run-internal-tests.sh deleted file mode 100755 index 9a61a87662..0000000000 --- a/ci_scripts/run-internal-tests.sh +++ /dev/null @@ -1,20 +0,0 @@ -# commit a70894c8c4223424151cdff7441b1fb2e6bad309 -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/httpauth -run TestClient >> ./logs/internal/TestClient.log - -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/ioutil -run TestAckReadWriter >> ./logs/internal/TestAckReadWriter.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/ioutil -run TestAckReadWriterCRCFailure >> ./logs/internal/TestAckReadWriterCRCFailure.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/ioutil -run TestAckReadWriterFlushOnClose >> ./logs/internal/TestAckReadWriterFlushOnClose.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/ioutil -run TestAckReadWriterPartialRead >> ./logs/internal/TestAckReadWriterPartialRead.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/ioutil -run TestAckReadWriterReadError >> ./logs/internal/TestAckReadWriterReadError.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/ioutil -run TestLenReadWriter >> ./logs/internal/TestLenReadWriter.log - -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestRPCClientDialer >> ./logs/internal/TestRPCClientDialer.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestConn >> ./logs/internal/TestConn.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestListener >> ./logs/internal/TestListener.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestKKAndSecp256k1 >> ./logs/internal/TestKKAndSecp256k1.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestXKAndSecp256k1 >> ./logs/internal/TestXKAndSecp256k1.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestReadWriterKKPattern >> ./logs/internal/TestReadWriterKKPattern.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestReadWriterXKPattern >> ./logs/internal/TestReadWriterXKPattern.log -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/noise -run TestReadWriterConcurrentTCP >> ./logs/internal/TestReadWriterConcurrentTCP.log - -go clean -testcache &>/dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/internal/skysocks -run TestProxy >> ./logs/internal/TestProxy.log diff --git a/ci_scripts/run-pkg-tests.sh b/ci_scripts/run-pkg-tests.sh deleted file mode 100755 index 40555c455b..0000000000 --- a/ci_scripts/run-pkg-tests.sh +++ /dev/null @@ -1,79 +0,0 @@ -# commit a70894c8c4223424151cdff7441b1fb2e6bad309 -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppDial >> ./logs/pkg/TestAppDial.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppAccept >> ./logs/pkg/TestAppAccept.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppWrite >> ./logs/pkg/TestAppWrite.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppRead >> ./logs/pkg/TestAppRead.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppSetup >> ./logs/pkg/TestAppSetup.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppCloseConn >> ./logs/pkg/TestAppCloseConn.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppClose >> ./logs/pkg/TestAppClose.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestAppCommand >> ./logs/pkg/TestAppCommand.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestPipeConn >> ./logs/pkg/TestPipeConn.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestProtocol >> ./logs/pkg/TestProtocol.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/app -run TestProtocolParallel >> ./logs/pkg/TestProtocolParallel.log - -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/hypervisor -run TestNewNode >> ./logs/pkg/TestNewNode.log - -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestDmsgDiscovery >> ./logs/pkg/TestDmsgDiscovery.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestTransportDiscovery >> ./logs/pkg/TestTransportDiscovery.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestTransportLogStore >> ./logs/pkg/TestTransportLogStore.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestRoutingTable >> ./logs/pkg/TestRoutingTable.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestAppsConfig >> ./logs/pkg/TestAppsConfig.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestAppsDir >> ./logs/pkg/TestAppsDir.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestLocalDir >> ./logs/pkg/TestLocalDir.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestNewNode >> ./logs/pkg/TestNewNode.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestNodeStartClose >> ./logs/pkg/TestNodeStartClose.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestNodeSpawnApp >> ./logs/pkg/TestNodeSpawnApp.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestNodeSpawnAppValidations >> ./logs/pkg/TestNodeSpawnAppValidations.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestListApps >> ./logs/pkg/TestListApps.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestStartStopApp >> ./logs/pkg/TestStartStopApp.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/node -run TestRPC >> ./logs/pkg/TestRPC.log - -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestAppManagerInit >> ./logs/pkg/TestAppManagerInit.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestAppManagerSetupLoop >> ./logs/pkg/TestAppManagerSetupLoop.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestAppManagerCloseLoop >> ./logs/pkg/TestAppManagerCloseLoop.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestAppManagerForward >> ./logs/pkg/TestAppManagerForward.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestManagedRoutingTableCleanup >> ./logs/pkg/TestManagedRoutingTableCleanup.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestPortManager >> ./logs/pkg/TestPortManager.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouteManagerGetRule >> ./logs/pkg/TestRouteManagerGetRule.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouteManagerRemoveLoopRule >> ./logs/pkg/TestRouteManagerRemoveLoopRule.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouteManagerAddRemoveRule >> ./logs/pkg/TestRouteManagerAddRemoveRule.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouteManagerDeleteRules >> ./logs/pkg/TestRouteManagerDeleteRules.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouteManagerConfirmLoop >> ./logs/pkg/TestRouteManagerConfirmLoop.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouteManagerLoopClosed >> ./logs/pkg/TestRouteManagerLoopClosed.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterForwarding >> ./logs/pkg/TestRouterForwarding.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterAppInit >> ./logs/pkg/TestRouterAppInit.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterApp >> ./logs/pkg/TestRouterApp.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterLocalApp >> ./logs/pkg/TestRouterLocalApp.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterSetup >> ./logs/pkg/TestRouterSetup.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterSetupLoop >> ./logs/pkg/TestRouterSetupLoop.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterSetupLoopLocal >> ./logs/pkg/TestRouterSetupLoopLocal.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterCloseLoop >> ./logs/pkg/TestRouterCloseLoop.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterCloseLoopOnAppClose >> ./logs/pkg/TestRouterCloseLoopOnAppClose.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterCloseLoopOnRouterClose >> ./logs/pkg/TestRouterCloseLoopOnRouterClose.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/router -run TestRouterRouteExpiration >> ./logs/pkg/TestRouterRouteExpiration.log - -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/routing -run TestBoltDBRoutingTable >> ./logs/pkg/TestBoltDBRoutingTable.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/routing -run TestMakePacket >> ./logs/pkg/TestMakePacket.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/routing -run TestRoutingTable >> ./logs/pkg/TestRoutingTable.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/routing -run TestAppRule >> ./logs/pkg/TestAppRule.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/routing -run TestForwardRule >> ./logs/pkg/TestForwardRule.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/setup -run TestNewProtocol >> ./logs/pkg/TestNewProtocol.log - -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestSettlementHandshake >> ./logs/pkg/TestSettlementHandshake.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestSettlementHandshakeInvalidSig >> ./logs/pkg/TestSettlementHandshakeInvalidSig.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestSettlementHandshakePrivate >> ./logs/pkg/TestSettlementHandshakePrivate.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestSettlementHandshakeExistingTransport >> ./logs/pkg/TestSettlementHandshakeExistingTransport.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestValidateEntry >> ./logs/pkg/TestValidateEntry.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestInMemoryTransportLogStore >> ./logs/pkg/TestInMemoryTransportLogStore.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestFileTransportLogStore >> ./logs/pkg/TestFileTransportLogStore.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestTransportManager >> ./logs/pkg/TestTransportManager.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestTransportManagerReEstablishTransports >> ./logs/pkg/TestTransportManagerReEstablishTransports.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestTransportManagerLogs >> ./logs/pkg/TestTransportManagerLogs.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestTCPFactory >> ./logs/pkg/TestTCPFactory.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport -run TestFilePKTable >> ./logs/pkg/TestFilePKTable.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport-discovery/client -run TestClientAuth >> ./logs/pkg/TestClientAuth.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport-discovery/client -run TestRegisterTransportResponses >> ./logs/pkg/TestRegisterTransportResponses.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport-discovery/client -run TestRegisterTransports >> ./logs/pkg/TestRegisterTransports.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport-discovery/client -run TestGetTransportByID >> ./logs/pkg/TestGetTransportByID.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport-discovery/client -run TestGetTransportsByEdge >> ./logs/pkg/TestGetTransportsByEdge.log -go clean -testcache &> /dev/null || go test -race -tags no_ci -cover -timeout=5m github.com/SkycoinProject/skywire-mainnet/pkg/transport-discovery/client -run TestUpdateStatuses >> ./logs/pkg/TestUpdateStatuses.log diff --git a/cmd/apps/helloworld/helloworld.go b/cmd/apps/helloworld/helloworld.go deleted file mode 100644 index 3c2f731979..0000000000 --- a/cmd/apps/helloworld/helloworld.go +++ /dev/null @@ -1,89 +0,0 @@ -/* -simple client server app for skywire visor testing -*/ -package main - -import ( - "log" - "os" - - "github.com/SkycoinProject/dmsg/cipher" - "github.com/SkycoinProject/skycoin/src/util/logging" - - "github.com/SkycoinProject/skywire-mainnet/pkg/app" - "github.com/SkycoinProject/skywire-mainnet/pkg/app/appnet" - "github.com/SkycoinProject/skywire-mainnet/pkg/routing" -) - -const ( - netType = appnet.TypeSkynet -) - -func main() { - clientConfig, err := app.ClientConfigFromEnv() - if err != nil { - log.Fatalf("Error getting client config: %v\n", err) - } - - app, err := app.NewClient(logging.MustGetLogger("helloworld"), clientConfig) - if err != nil { - log.Fatalf("Error creating app client: %v\n", err) - } - defer app.Close() - - if len(os.Args) == 1 { - port := routing.Port(1024) - l, err := app.Listen(netType, port) - if err != nil { - log.Fatalf("Error listening network %v on port %d: %v\n", netType, port, err) - } - - log.Println("listening for incoming connections") - for { - conn, err := l.Accept() - if err != nil { - log.Fatalf("Failed to accept conn: %v\n", err) - } - - log.Printf("got new connection from: %v\n", conn.RemoteAddr()) - go func() { - buf := make([]byte, 4) - if _, err := conn.Read(buf); err != nil { - log.Printf("Failed to read remote data: %v\n", err) - // TODO: close conn - } - - log.Printf("Message from %s: %s\n", conn.RemoteAddr().String(), string(buf)) - if _, err := conn.Write([]byte("pong")); err != nil { - log.Printf("Failed to write to a remote node: %v\n", err) - // TODO: close conn - } - }() - } - } - - remotePK := cipher.PubKey{} - if err := remotePK.UnmarshalText([]byte(os.Args[1])); err != nil { - log.Fatal("Failed to construct PubKey: ", err, os.Args[1]) - } - - conn, err := app.Dial(appnet.Addr{ - Net: netType, - PubKey: remotePK, - Port: 10, - }) - if err != nil { - log.Fatalf("Failed to open remote conn: %v\n", err) - } - - if _, err := conn.Write([]byte("ping")); err != nil { - log.Fatalf("Failed to write to a remote node: %v\n", err) - } - - buf := make([]byte, 4) - if _, err = conn.Read(buf); err != nil { - log.Fatalf("Failed to read remote data: %v\n", err) - } - - log.Printf("Message from %s: %s", conn.RemoteAddr().String(), string(buf)) -} diff --git a/cmd/apps/skychat/README.md b/cmd/apps/skychat/README.md index 374c9241d4..043b2ca650 100644 --- a/cmd/apps/skychat/README.md +++ b/cmd/apps/skychat/README.md @@ -8,7 +8,7 @@ Chat only supports one WEB client user at a time. ## Local setup -Create 2 node config files: +Create 2 visor config files: `skywire1.json` @@ -35,13 +35,13 @@ Create 2 node config files: "version": "1.0", "auto_start": true, "port": 1, - "args": ["-addr", ":8001"] + "args": ["-addr", ":8002"] } ] } ``` -Compile binaries and start 2 nodes: +Compile binaries and start 2 visors: ```bash $ go build -o apps/skychat.v1.0 ./cmd/apps/skychat @@ -49,4 +49,4 @@ $ ./skywire-visor skywire1.json $ ./skywire-visor skywire2.json ``` -Chat interface will be available on ports `8000` and `8001`. +Chat interface will be available on ports `8001` and `8002`. diff --git a/cmd/apps/skychat/chat.go b/cmd/apps/skychat/chat.go index 4e25ac4484..1ff04fb7ef 100644 --- a/cmd/apps/skychat/chat.go +++ b/cmd/apps/skychat/chat.go @@ -1,99 +1,99 @@ -//go:generate esc -o static.go -prefix static static - /* skychat app for skywire visor */ package main import ( + "embed" "encoding/json" "flag" "fmt" + "io/fs" "net" "net/http" + "os" "sync" "time" - "github.com/SkycoinProject/dmsg/cipher" - "github.com/SkycoinProject/skycoin/src/util/logging" + "github.com/skycoin/dmsg/buildinfo" + "github.com/skycoin/dmsg/cipher" - "github.com/SkycoinProject/skywire-mainnet/internal/netutil" - "github.com/SkycoinProject/skywire-mainnet/pkg/app" - "github.com/SkycoinProject/skywire-mainnet/pkg/app/appnet" - "github.com/SkycoinProject/skywire-mainnet/pkg/routing" + "github.com/skycoin/skywire/internal/netutil" + "github.com/skycoin/skywire/pkg/app" + "github.com/skycoin/skywire/pkg/app/appnet" + "github.com/skycoin/skywire/pkg/routing" ) const ( - appName = "skychat" netType = appnet.TypeSkynet port = routing.Port(1) ) -var addr = flag.String("addr", ":8000", "address to bind") +var addr = flag.String("addr", ":8001", "address to bind") var r = netutil.NewRetrier(50*time.Millisecond, 5, 2) var ( - chatApp *app.Client - clientCh chan string - chatConns map[cipher.PubKey]net.Conn - connsMu sync.Mutex - log *logging.MasterLogger + appC *app.Client + clientCh chan string + conns map[cipher.PubKey]net.Conn // Chat connections + connsMu sync.Mutex ) -func main() { - log = app.NewLogger(appName) - flag.Parse() +// the go embed static points to skywire/cmd/apps/skychat/static - clientConfig, err := app.ClientConfigFromEnv() - if err != nil { - log.Fatalf("Error getting client config: %v\n", err) - } +//go:embed static +var embededFiles embed.FS - // TODO: pass `log`? - a, err := app.NewClient(logging.MustGetLogger(fmt.Sprintf("app_%s", appName)), clientConfig) - if err != nil { - log.Fatal("Setup failure: ", err) +func main() { + appC = app.NewClient(nil) + defer appC.Close() + + if _, err := buildinfo.Get().WriteTo(os.Stdout); err != nil { + fmt.Printf("Failed to output build info: %v", err) } - defer a.Close() - log.Println("Successfully created skychat app") - chatApp = a + flag.Parse() + fmt.Print("Successfully started skychat.") clientCh = make(chan string) defer close(clientCh) - chatConns = make(map[cipher.PubKey]net.Conn) + conns = make(map[cipher.PubKey]net.Conn) go listenLoop() - http.Handle("/", http.FileServer(FS(false))) + http.Handle("/", http.FileServer(getFileSystem())) http.HandleFunc("/message", messageHandler) http.HandleFunc("/sse", sseHandler) - log.Println("Serving HTTP on", *addr) - log.Fatal(http.ListenAndServe(*addr, nil)) + fmt.Print("Serving HTTP on", *addr) + err := http.ListenAndServe(*addr, nil) + if err != nil { + fmt.Println(err) + os.Exit(1) + } } func listenLoop() { - l, err := chatApp.Listen(netType, port) + l, err := appC.Listen(netType, port) if err != nil { - log.Printf("Error listening network %v on port %d: %v\n", netType, port, err) + fmt.Printf("Error listening network %v on port %d: %v\n", netType, port, err) return } for { - log.Println("Accepting skychat conn...") + fmt.Print("Accepting skychat conn...") conn, err := l.Accept() if err != nil { - log.Println("Failed to accept conn:", err) + fmt.Print("Failed to accept conn:", err) return } - log.Println("Accepted skychat conn") + fmt.Print("Accepted skychat conn") raddr := conn.RemoteAddr().(appnet.Addr) connsMu.Lock() - chatConns[raddr.PubKey] = conn + conns[raddr.PubKey] = conn connsMu.Unlock() - log.Printf("Accepted skychat conn on %s from %s\n", conn.LocalAddr(), raddr.PubKey) + fmt.Printf("Accepted skychat conn on %s from %s\n", conn.LocalAddr(), raddr.PubKey) go handleConn(conn) } @@ -105,19 +105,23 @@ func handleConn(conn net.Conn) { buf := make([]byte, 32*1024) n, err := conn.Read(buf) if err != nil { - log.Println("Failed to read packet:", err) + fmt.Print("Failed to read packet:", err) + raddr := conn.RemoteAddr().(appnet.Addr) + connsMu.Lock() + delete(conns, raddr.PubKey) + connsMu.Unlock() return } clientMsg, err := json.Marshal(map[string]string{"sender": raddr.PubKey.Hex(), "message": string(buf[:n])}) if err != nil { - log.Printf("Failed to marshal json: %v", err) + fmt.Printf("Failed to marshal json: %v", err) } select { case clientCh <- string(clientMsg): - log.Printf("Received and sent to ui: %s\n", clientMsg) + fmt.Printf("Received and sent to ui: %s\n", clientMsg) default: - log.Printf("Received and trashed: %s\n", clientMsg) + fmt.Printf("Received and trashed: %s\n", clientMsg) } } } @@ -141,13 +145,13 @@ func messageHandler(w http.ResponseWriter, req *http.Request) { Port: 1, } connsMu.Lock() - conn, ok := chatConns[pk] + conn, ok := conns[pk] connsMu.Unlock() if !ok { var err error err = r.Do(func() error { - conn, err = chatApp.Dial(addr) + conn, err = appC.Dial(addr) return err }) if err != nil { @@ -156,7 +160,7 @@ func messageHandler(w http.ResponseWriter, req *http.Request) { } connsMu.Lock() - chatConns[pk] = conn + conns[pk] = conn connsMu.Unlock() go handleConn(conn) @@ -165,12 +169,13 @@ func messageHandler(w http.ResponseWriter, req *http.Request) { _, err := conn.Write([]byte(data["message"])) if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) + connsMu.Lock() - delete(chatConns, pk) + delete(conns, pk) connsMu.Unlock() + return } - } func sseHandler(w http.ResponseWriter, req *http.Request) { @@ -195,8 +200,16 @@ func sseHandler(w http.ResponseWriter, req *http.Request) { f.Flush() case <-req.Context().Done(): - log.Println("SSE connection were closed.") + fmt.Print("SSE connection were closed.") return } } } + +func getFileSystem() http.FileSystem { + fsys, err := fs.Sub(embededFiles, "static") + if err != nil { + panic(err) + } + return http.FS(fsys) +} diff --git a/cmd/apps/skychat/static.go b/cmd/apps/skychat/static.go deleted file mode 100644 index d03fbaeac5..0000000000 --- a/cmd/apps/skychat/static.go +++ /dev/null @@ -1,262 +0,0 @@ -// Code generated by "esc -o static.go -prefix static static"; DO NOT EDIT. - -package main - -import ( - "bytes" - "compress/gzip" - "encoding/base64" - "fmt" - "io" - "io/ioutil" - "net/http" - "os" - "path" - "sync" - "time" -) - -type _escLocalFS struct{} - -var _escLocal _escLocalFS - -type _escStaticFS struct{} - -var _escStatic _escStaticFS - -type _escDirectory struct { - fs http.FileSystem - name string -} - -type _escFile struct { - compressed string - size int64 - modtime int64 - local string - isDir bool - - once sync.Once - data []byte - name string -} - -func (_escLocalFS) Open(name string) (http.File, error) { - f, present := _escData[path.Clean(name)] - if !present { - return nil, os.ErrNotExist - } - return os.Open(f.local) -} - -func (_escStaticFS) prepare(name string) (*_escFile, error) { - f, present := _escData[path.Clean(name)] - if !present { - return nil, os.ErrNotExist - } - var err error - f.once.Do(func() { - f.name = path.Base(name) - if f.size == 0 { - return - } - var gr *gzip.Reader - b64 := base64.NewDecoder(base64.StdEncoding, bytes.NewBufferString(f.compressed)) - gr, err = gzip.NewReader(b64) - if err != nil { - return - } - f.data, err = ioutil.ReadAll(gr) - }) - if err != nil { - return nil, err - } - return f, nil -} - -func (fs _escStaticFS) Open(name string) (http.File, error) { - f, err := fs.prepare(name) - if err != nil { - return nil, err - } - return f.File() -} - -func (dir _escDirectory) Open(name string) (http.File, error) { - return dir.fs.Open(dir.name + name) -} - -func (f *_escFile) File() (http.File, error) { - type httpFile struct { - *bytes.Reader - *_escFile - } - return &httpFile{ - Reader: bytes.NewReader(f.data), - _escFile: f, - }, nil -} - -func (f *_escFile) Close() error { - return nil -} - -func (f *_escFile) Readdir(count int) ([]os.FileInfo, error) { - if !f.isDir { - return nil, fmt.Errorf(" escFile.Readdir: '%s' is not directory", f.name) - } - - fis, ok := _escDirs[f.local] - if !ok { - return nil, fmt.Errorf(" escFile.Readdir: '%s' is directory, but we have no info about content of this dir, local=%s", f.name, f.local) - } - limit := count - if count <= 0 || limit > len(fis) { - limit = len(fis) - } - - if len(fis) == 0 && count > 0 { - return nil, io.EOF - } - - return []os.FileInfo(fis[0:limit]), nil -} - -func (f *_escFile) Stat() (os.FileInfo, error) { - return f, nil -} - -func (f *_escFile) Name() string { - return f.name -} - -func (f *_escFile) Size() int64 { - return f.size -} - -func (f *_escFile) Mode() os.FileMode { - return 0 -} - -func (f *_escFile) ModTime() time.Time { - return time.Unix(f.modtime, 0) -} - -func (f *_escFile) IsDir() bool { - return f.isDir -} - -func (f *_escFile) Sys() interface{} { - return f -} - -// FS returns a http.Filesystem for the embedded assets. If useLocal is true, -// the filesystem's contents are instead used. -func FS(useLocal bool) http.FileSystem { - if useLocal { - return _escLocal - } - return _escStatic -} - -// Dir returns a http.Filesystem for the embedded assets on a given prefix dir. -// If useLocal is true, the filesystem's contents are instead used. -func Dir(useLocal bool, name string) http.FileSystem { - if useLocal { - return _escDirectory{fs: _escLocal, name: name} - } - return _escDirectory{fs: _escStatic, name: name} -} - -// FSByte returns the named file from the embedded assets. If useLocal is -// true, the filesystem's contents are instead used. -func FSByte(useLocal bool, name string) ([]byte, error) { - if useLocal { - f, err := _escLocal.Open(name) - if err != nil { - return nil, err - } - b, err := ioutil.ReadAll(f) - _ = f.Close() - return b, err - } - f, err := _escStatic.prepare(name) - if err != nil { - return nil, err - } - return f.data, nil -} - -// FSMustByte is the same as FSByte, but panics if name is not present. -func FSMustByte(useLocal bool, name string) []byte { - b, err := FSByte(useLocal, name) - if err != nil { - panic(err) - } - return b -} - -// FSString is the string version of FSByte. -func FSString(useLocal bool, name string) (string, error) { - b, err := FSByte(useLocal, name) - return string(b), err -} - -// FSMustString is the string version of FSMustByte. -func FSMustString(useLocal bool, name string) string { - return string(FSMustByte(useLocal, name)) -} - -var _escData = map[string]*_escFile{ - - "/index.html": { - name: "index.html", - local: "static/index.html", - size: 5829, - modtime: 1540421522, - compressed: ` -H4sIAAAAAAAC/7xYW2/jxhV+9684Sy9CCbEo2Wu7CUWqSNst0iKbFHWAPiyMeEQeiYMdzrAzQ9uqoP9e -zPBOkbLSBSo/iJzLuXznOxc5eBeLSO8yhESnbHVxEZhvYIRvQwe5s7oACBIksXkACFLUBKKESIU6dHK9 -mX3nrC6KPU01w9WfE6LhhywL5sV7uan0zryYZ6sK9sWz+WwE17MNSSnb+aAIVzOFkm6WvROK/gd9uP6Q -vbZ2IsGE9OHy/v6+XD0UGmEt4l1bS0xVxsjOhw3DtoSU8lmCdJtoH64Xi+ekvUfklnIfFq21NYm+bKXI -eezD5e3d3fX9bU8zaavV+KpnMUZCEk0F94ELjscOUJ6gpLonKe/gxKjSMwvkkZSMxDHl266lfesrqZ6i -Ma6JPAcd8zqLqcSosD4SLE9568ALjXXiw83NohOX2qBrTAfC9f335Gbdx82TGNGMItcz42qHIgxffbg+ -cm6mRdbWMSaK0ba08u5aaC3SvoniGeWGiRcfEhrH2PE1oRpnKiORjcCLJNmyF+nmNjJGM0XVG5YRj0Sa -PiPsK3CslmVzIUqIXovX03D8z/GrSeJ96MDQpnlhUWtPyBjlTJKY5sqHmzrytc0pKkW2eBTHEVp0/RmW -YkLYc/P4JNWYQkw0tpWWFL27G6wccRyP6bXSMB2Qdf3hdpjuC1h4d/8PPjVlsSoIMiXsDU88hTxG2XDt -8vo+iu6JQXL4gsQI6XPnymZz+93t/Rj4KiP8NFVLrGYMN7pPhJJZxdZN9gpKMBrD5ebe/I15txEyPaeY -NVE6QfZLxAGu2zrTMuiYNZRnuf5semloIvd4Fgj+EV3K2iTLhjSAjg/XQ3aclZgtI1W+TmnXzK5RcDOO -USceX2eazZFcM8q7bW2gYNo4/y4XFt4fWr3BTiLzehQJ5sVkYx7NtFDOOMS0R4gYUSp0ylbplKMLBNaG -crNrmQOCFxaFDskyL5JINP6zOjPRCVXTJUjUueSwIUzhspYLEFjHwDrmGAY5kDESYSJYjDJ0PnKNErJ8 -zWgEX3DnwHzkcmGEA8+E5Rg63zbGz42d9VvOgMYtL5Rz7Jgpvc4qmOesRGdu4anGupRQXl0q+5TTl19m -aSO9XdYr2UPwttO7D64pZJ+K/a8F9l+SaoSdyCWUGs+G9gF5PIhuMDfI1MNvJGmmy3PWObBj8r7djbjS -Mo+0kJNpe8N2goSqJg0UhPD5cXnqCITAc8aGzlTRgBD2h5NClLcR8iOJkomEcFVs/kbiuGG0nE6HJPym -FD7ka+P1GiftI1VOm09f1BtOe1mukomcnvLps3wcwiYWUZ4i194W9UeG5vFPu7/FE7eR7k49yjnKH3/9 -9BN8G3bvm89TwOgqIJBI3ITOZc3l93sJYRj28f8juMVY54IPrnsw9I0Yjb5U7GUY6bdKw/u9PARzsgrm -jK6eTsBYJUKqtkcwWmIV1v5MUoQQUrX1NlKk1m43RddYWwwG1tqq5bvLIUmWfk/v90aKVgbSH0Uu1WTq -afGgJeXbydTLSPygidSTmytwF+704LcvfKI81/jWlaflRVc/3cCktv1dZfs338C7PlUoj1geo6qPT49g -acjaoWF9oef74eJMSlVUPItQ/UJnBihnFZj5dfV+r9UhmNvnANOGb3UoD4YhlcEHP5hjugrM+FUum1J3 -COZ2paDQCIO66TpMICVyGRn2cHyBj8/I9YNdmbhzpdDt41Uc9wQvXYMQCnaGq6FIFDpiogmE8PeHX372 -MiKVJbRnVvvimzuN/D1o5Vvz/kI0XoFBxbcyy6n3yk7U5VJ177A8wYs6r4rv6djZuv60tD0WBWvk6mEk -m/szA7KReLRLPbLPi0fPtqTlOTW0eh8u3t2yPHS2bXC/kg0YfNSakFlujlXpf+codw9WrpA/MDZxq9/I -7rRuSfa3RrgC8+3ZlPiJKu1JTMUzTqrie9SfkLUOkzhuTi6/JsFDcN2TjamLwWPtRqq2NiUGOGey5TAO -ezP+jHLECj/Bjg3qKKk9cq9gDynqRMQ+uP/45eFX96r4L5pfpKSypZpudpN9Qz+/F96rKiN9q/5gfDjO -Gk8nyCfSTCGD9aAq9xKVJ75Mx46cXwZMq6jy39q1HJf4e9L/vGifqgRddtahGqJUTQRApvAUKAY346xp -sQZp82ygJgylnjz9lVCGMWhhedRE7P3e9oyn6ZiRh+PlwfBGxDALG5VYgTPtMrpD7BfKY/HikSwr+4wZ -kifT6mdbPUQH8+LXWjAv/mn93wAAAP//aOzW6sUWAAA= -`, - }, - - "/": { - name: "/", - local: `static`, - isDir: true, - }, -} - -var _escDirs = map[string][]os.FileInfo{ - - "static": { - _escData["/index.html"], - }, -} diff --git a/cmd/apps/skychat/static/index.html b/cmd/apps/skychat/static/index.html index 184f7aa50b..df658eae03 100644 --- a/cmd/apps/skychat/static/index.html +++ b/cmd/apps/skychat/static/index.html @@ -1,215 +1,745 @@ - - - - Chat App - - - - - - - -
-
    - -
    - - -
    -
    - - - - + + + + + + + + + + +
    + +
      + + +
      + + + + + + + \ No newline at end of file diff --git a/cmd/apps/skychat/static/p.png b/cmd/apps/skychat/static/p.png new file mode 100644 index 0000000000..1dd69287a4 Binary files /dev/null and b/cmd/apps/skychat/static/p.png differ diff --git a/cmd/apps/skysocks-client/README.md b/cmd/apps/skysocks-client/README.md index 4beef86dce..16d890f6da 100644 --- a/cmd/apps/skysocks-client/README.md +++ b/cmd/apps/skysocks-client/README.md @@ -2,7 +2,7 @@ `skysocks-client` app implements client for the SOCKS5 app. -It opens persistent `skywire` connection to the configured remote node +It opens persistent `skywire` connection to the configured remote visor and local TCP port, all incoming TCP traffics is forwarded to the ~skywire~ connection. diff --git a/cmd/apps/skysocks-client/skysocks-client.go b/cmd/apps/skysocks-client/skysocks-client.go index 3c841a01e6..dc8d94be60 100644 --- a/cmd/apps/skysocks-client/skysocks-client.go +++ b/cmd/apps/skysocks-client/skysocks-client.go @@ -5,53 +5,67 @@ package main import ( "flag" - "fmt" + "io" "net" + "os" "time" - "github.com/SkycoinProject/dmsg/cipher" - "github.com/SkycoinProject/skycoin/src/util/logging" + "github.com/sirupsen/logrus" + "github.com/skycoin/dmsg/buildinfo" + "github.com/skycoin/dmsg/cipher" - "github.com/SkycoinProject/skywire-mainnet/internal/netutil" - "github.com/SkycoinProject/skywire-mainnet/internal/skyenv" - "github.com/SkycoinProject/skywire-mainnet/internal/skysocks" - "github.com/SkycoinProject/skywire-mainnet/pkg/app" - "github.com/SkycoinProject/skywire-mainnet/pkg/app/appnet" - "github.com/SkycoinProject/skywire-mainnet/pkg/routing" + "github.com/skycoin/skywire/internal/netutil" + "github.com/skycoin/skywire/internal/skysocks" + "github.com/skycoin/skywire/pkg/app" + "github.com/skycoin/skywire/pkg/app/appnet" + "github.com/skycoin/skywire/pkg/routing" + "github.com/skycoin/skywire/pkg/skyenv" ) const ( - appName = "skysocks-client" netType = appnet.TypeSkynet socksPort = routing.Port(3) ) -var r = netutil.NewRetrier(time.Second, 0, 1) - -func main() { - log := app.NewLogger(appName) - skysocks.Log = log.PackageLogger("skysocks") +var log = logrus.New() - var addr = flag.String("addr", skyenv.SkysocksClientAddr, "Client address to listen on") - var serverPK = flag.String("srv", "", "PubKey of the server to connect to") - flag.Parse() +var r = netutil.NewRetrier(time.Second, 0, 1) - config, err := app.ClientConfigFromEnv() +func dialServer(appCl *app.Client, pk cipher.PubKey) (net.Conn, error) { + var conn net.Conn + err := r.Do(func() error { + var err error + conn, err = appCl.Dial(appnet.Addr{ + Net: netType, + PubKey: pk, + Port: socksPort, + }) + return err + }) if err != nil { - log.Fatalf("Error getting client config: %v\n", err) + return nil, err } - socksApp, err := app.NewClient(logging.MustGetLogger(fmt.Sprintf("app_%s", appName)), config) + return conn, nil +} - if err != nil { - log.Fatal("Setup failure: ", err) +func main() { + appC := app.NewClient(nil) + defer appC.Close() + + skysocks.Log = log + + if _, err := buildinfo.Get().WriteTo(os.Stdout); err != nil { + log.Printf("Failed to output build info: %v", err) } - defer func() { - socksApp.Close() - }() + + var addr = flag.String("addr", skyenv.SkysocksClientAddr, "Client address to listen on") + var serverPK = flag.String("srv", "", "PubKey of the server to connect to") + flag.Parse() if *serverPK == "" { - log.Fatal("Invalid server PubKey") + log.Warn("Empty server PubKey. Exiting") + return } pk := cipher.PubKey{} @@ -59,29 +73,30 @@ func main() { log.Fatal("Invalid server PubKey: ", err) } - var conn net.Conn - err = r.Do(func() error { - conn, err = socksApp.Dial(appnet.Addr{ - Net: netType, - PubKey: pk, - Port: socksPort, - }) - return err - }) - if err != nil { - log.Fatal("Failed to dial to a server: ", err) - } + for { + conn, err := dialServer(appC, pk) + if err != nil { + log.Fatalf("Failed to dial to a server: %v", err) + } - log.Printf("Connected to %v\n", pk) + log.Printf("Connected to %v\n", pk) - client, err := skysocks.NewClient(conn) - if err != nil { - log.Fatal("Failed to create a new client: ", err) - } + client, err := skysocks.NewClient(conn) + if err != nil { + log.Fatal("Failed to create a new client: ", err) + } + + log.Printf("Serving proxy client %v\n", *addr) + + if err := client.ListenAndServe(*addr); err != nil { + log.Errorf("Error serving proxy client: %v\n", err) + } - log.Printf("Serving proxy client %v\n", *addr) + // need to filter this out, cause usually client failure means app conn is already closed + if err := conn.Close(); err != nil && err != io.ErrClosedPipe { + log.Errorf("Error closing app conn: %v\n", err) + } - if err := client.ListenAndServe(*addr); err != nil { - log.Fatalf("Error serving proxy client: %v\n", err) + log.Println("Reconnecting to skysocks server") } } diff --git a/cmd/apps/skysocks/README.md b/cmd/apps/skysocks/README.md index 7e7432982e..f69f0e60a9 100644 --- a/cmd/apps/skysocks/README.md +++ b/cmd/apps/skysocks/README.md @@ -10,7 +10,7 @@ If none are provided, the server does not require authentication. ## Local setup -Create 2 node config files: +Create 2 visor config files: - `skywire1.json` @@ -44,7 +44,7 @@ Create 2 node config files: } ``` -Compile binaries and start 2 nodes: +Compile binaries and start 2 visors: ```sh $ go build -o apps/skysocks.v1.0 ./cmd/apps/skysocks @@ -53,7 +53,7 @@ $ ./skywire-visor skywire1.json $ ./skywire-visor skywire2.json ``` -You should be able to connect to a secondary node via `curl`: +You should be able to connect to a secondary visor via `curl`: ```sh $ curl -v -x socks5://123456:@localhost:1080 https://api.ipify.org diff --git a/cmd/apps/skysocks/skysocks.go b/cmd/apps/skysocks/skysocks.go index f36df3315d..680a98289e 100644 --- a/cmd/apps/skysocks/skysocks.go +++ b/cmd/apps/skysocks/skysocks.go @@ -6,52 +6,64 @@ package main import ( "flag" "fmt" + "os" + "os/signal" - "github.com/SkycoinProject/skycoin/src/util/logging" + "github.com/sirupsen/logrus" + "github.com/skycoin/dmsg/buildinfo" - "github.com/SkycoinProject/skywire-mainnet/internal/skysocks" - "github.com/SkycoinProject/skywire-mainnet/pkg/app" - "github.com/SkycoinProject/skywire-mainnet/pkg/app/appnet" - "github.com/SkycoinProject/skywire-mainnet/pkg/routing" + "github.com/skycoin/skywire/internal/skysocks" + "github.com/skycoin/skywire/pkg/app" + "github.com/skycoin/skywire/pkg/app/appnet" + "github.com/skycoin/skywire/pkg/routing" ) const ( - appName = "skysocks" - netType = appnet.TypeSkynet - port = routing.Port(3) + netType = appnet.TypeSkynet + port routing.Port = 3 ) +var log = logrus.New() + func main() { - log := app.NewLogger(appName) - skysocks.Log = log.PackageLogger("skysocks") + appC := app.NewClient(nil) + defer appC.Close() - var passcode = flag.String("passcode", "", "Authorize user against this passcode") - flag.Parse() + skysocks.Log = log - config, err := app.ClientConfigFromEnv() - if err != nil { - log.Fatalf("Error getting client config: %v\n", err) + if _, err := buildinfo.Get().WriteTo(os.Stdout); err != nil { + fmt.Printf("Failed to output build info: %v", err) } - socksApp, err := app.NewClient(logging.MustGetLogger(fmt.Sprintf("app_%s", appName)), config) - if err != nil { - log.Fatal("Setup failure: ", err) - } - defer func() { - socksApp.Close() - }() + var passcode = flag.String("passcode", "", "Authorize user against this passcode") + flag.Parse() srv, err := skysocks.NewServer(*passcode, log) if err != nil { log.Fatal("Failed to create a new server: ", err) } - l, err := socksApp.Listen(netType, port) + l, err := appC.Listen(netType, port) if err != nil { log.Fatalf("Error listening network %v on port %d: %v\n", netType, port, err) } - log.Infoln("Starting serving proxy server") + fmt.Println("Starting serving proxy server") + + termCh := make(chan os.Signal, 1) + signal.Notify(termCh, os.Interrupt) + + go func() { + <-termCh - log.Fatal(srv.Serve(l)) + if err := srv.Close(); err != nil { + fmt.Println(err) + os.Exit(1) + } + }() + + if err := srv.Serve(l); err != nil { + fmt.Println(err) + os.Exit(1) + } } diff --git a/cmd/apps/vpn-client/README.md b/cmd/apps/vpn-client/README.md new file mode 100644 index 0000000000..f2b4514391 --- /dev/null +++ b/cmd/apps/vpn-client/README.md @@ -0,0 +1,47 @@ +# Skywire VPN client app + +`vpn-client` app implements client for the VPN server app. + +It opens persistent `skywire` connection to the configured remote visor. This connection is used as a tunnel. Client forwards all the traffic through that tunnel to the VPN server. + +## Configuration + +Additional arguments may be passed to the application via `args` array. These are: +- `-srv` (required) - is a public key of the remove VPN server; +- `-passcode` - passcode to authenticate connection. Optional, may be omitted. + +Full config of the client should look like this: +```json5 +{ + "app": "vpn-client", + "auto_start": false, + "port": 43, + "args": [ + "-srv", + "03e9019b3caa021dbee1c23e6295c6034ab4623aec50802fcfdd19764568e2958d", + "-passcode", + "1234" + ] +} +``` + +## Running app + +Compile app binary and start a visor: + +```sh +$ go build -o apps/vpn-client ./cmd/apps/vpn-client +$ ./skywire-visor skywire-config.json +``` + +You should be able to see an additional hop with the `traceroute`-like utils: + +```sh +$ traceroute google.com +``` + +Also, your IP should be detected as the IP of the VPN server: + +```sh +$ curl https://api.ipify.org +``` \ No newline at end of file diff --git a/cmd/apps/vpn-client/vpn-client.go b/cmd/apps/vpn-client/vpn-client.go new file mode 100644 index 0000000000..bcadeb8fb9 --- /dev/null +++ b/cmd/apps/vpn-client/vpn-client.go @@ -0,0 +1,147 @@ +package main + +import ( + "flag" + "fmt" + "net" + "os" + "os/signal" + "syscall" + + "github.com/skycoin/dmsg/cipher" + + "github.com/skycoin/skywire/internal/vpn" + "github.com/skycoin/skywire/pkg/app" + "github.com/skycoin/skywire/pkg/app/appevent" +) + +var ( + serverPKStr = flag.String("srv", "", "PubKey of the server to connect to") + localPKStr = flag.String("pk", "", "Local PubKey") + localSKStr = flag.String("sk", "", "Local SecKey") + passcode = flag.String("passcode", "", "Passcode to authenticate connection") + killswitch = flag.Bool("killswitch", false, "If set, the Internet won't be restored during reconnection attempts") +) + +func main() { + flag.Parse() + + if *serverPKStr == "" { + // TODO(darkrengarius): fix args passage for Windows + //*serverPKStr = "03e9019b3caa021dbee1c23e6295c6034ab4623aec50802fcfdd19764568e2958d" + fmt.Println("VPN server pub key is missing") + os.Exit(1) + } + + serverPK := cipher.PubKey{} + if err := serverPK.UnmarshalText([]byte(*serverPKStr)); err != nil { + fmt.Printf("Invalid VPN server pub key: %v\n", err) + os.Exit(1) + } + + localPK := cipher.PubKey{} + if *localPKStr != "" { + if err := localPK.UnmarshalText([]byte(*localPKStr)); err != nil { + fmt.Printf("Invalid local PK: %v\n", err) + os.Exit(1) + } + } + + localSK := cipher.SecKey{} + if *localSKStr != "" { + if err := localSK.UnmarshalText([]byte(*localSKStr)); err != nil { + fmt.Printf("Invalid local SK: %v\n", err) + os.Exit(1) + } + } + + var directIPsCh, nonDirectIPsCh = make(chan net.IP, 100), make(chan net.IP, 100) + defer close(directIPsCh) + defer close(nonDirectIPsCh) + + eventSub := appevent.NewSubscriber() + + parseIP := func(addr string) net.IP { + ip, ok, err := vpn.ParseIP(addr) + if err != nil { + fmt.Printf("Failed to parse IP %s: %v\n", addr, err) + return nil + } + if !ok { + fmt.Printf("Failed to parse IP %s\n", addr) + return nil + } + + return ip + } + + eventSub.OnTCPDial(func(data appevent.TCPDialData) { + if ip := parseIP(data.RemoteAddr); ip != nil { + directIPsCh <- ip + } + }) + + eventSub.OnTCPClose(func(data appevent.TCPCloseData) { + if ip := parseIP(data.RemoteAddr); ip != nil { + nonDirectIPsCh <- ip + } + }) + + appClient := app.NewClient(eventSub) + defer appClient.Close() + + fmt.Printf("Connecting to VPN server %s\n", serverPK.String()) + + vpnClientCfg := vpn.ClientConfig{ + Passcode: *passcode, + Killswitch: *killswitch, + ServerPK: serverPK, + } + vpnClient, err := vpn.NewClient(vpnClientCfg, appClient) + if err != nil { + fmt.Printf("Error creating VPN client: %v\n", err) + } + + var directRoutesDone bool + for !directRoutesDone { + select { + case ip := <-directIPsCh: + if err := vpnClient.AddDirectRoute(ip); err != nil { + fmt.Printf("Failed to setup direct route to %s: %v\n", ip.String(), err) + } + default: + directRoutesDone = true + } + } + + go func() { + for ip := range directIPsCh { + if err := vpnClient.AddDirectRoute(ip); err != nil { + fmt.Printf("Failed to setup direct route to %s: %v\n", ip.String(), err) + } + } + }() + + go func() { + for ip := range nonDirectIPsCh { + if err := vpnClient.RemoveDirectRoute(ip); err != nil { + fmt.Printf("Failed to remove direct route to %s: %v\n", ip.String(), err) + } + } + }() + + osSigs := make(chan os.Signal, 2) + sigs := []os.Signal{syscall.SIGTERM, syscall.SIGINT} + for _, sig := range sigs { + signal.Notify(osSigs, sig) + } + + go func() { + <-osSigs + vpnClient.Close() + }() + + if err := vpnClient.Serve(); err != nil { + fmt.Printf("Failed to serve VPN: %v\n", err) + } +} diff --git a/cmd/apps/vpn-server/README.md b/cmd/apps/vpn-server/README.md new file mode 100644 index 0000000000..b2391e615f --- /dev/null +++ b/cmd/apps/vpn-server/README.md @@ -0,0 +1,35 @@ +# Skywire VPN server app + +`vpn-server` app implements VPN functionality over skywire net. + +Currently the server supports authentication with a passcode that is set in the configuration file. +If none is provided, the server does not require authentication. + +NOTE: in contrast with the proxy apps, VPN server and client must be run on different machines because of the networking features. + +## Configuration + +Additional arguments may be passed to the application via `args` array. These are: +- `-passcode` - passcode to authenticate incoming connections. Optional, may be omitted. + +Full config of the server should look like this: +```json5 +{ + "app": "vpn-server", + "auto_start": true, + "port": 44, + "args": [ + "-passcode", + "1234" + ] +} +``` + +## Running app + +Compile app binary and start a visor: + +```sh +$ go build -o apps/vpn-server ./cmd/apps/vpn-server +$ ./skywire-visor skywire-config.json +``` \ No newline at end of file diff --git a/cmd/apps/vpn-server/vpn-server.go b/cmd/apps/vpn-server/vpn-server.go new file mode 100644 index 0000000000..db19315563 --- /dev/null +++ b/cmd/apps/vpn-server/vpn-server.go @@ -0,0 +1,103 @@ +package main + +import ( + "flag" + "os" + "os/signal" + "runtime" + "syscall" + + "github.com/sirupsen/logrus" + "github.com/skycoin/dmsg/cipher" + + "github.com/skycoin/skywire/internal/vpn" + "github.com/skycoin/skywire/pkg/app" + "github.com/skycoin/skywire/pkg/app/appnet" + "github.com/skycoin/skywire/pkg/routing" + "github.com/skycoin/skywire/pkg/skyenv" +) + +const ( + netType = appnet.TypeSkynet + vpnPort = routing.Port(skyenv.VPNServerPort) +) + +var ( + log = logrus.New() +) + +var ( + localPKStr = flag.String("pk", "", "Local PubKey") + localSKStr = flag.String("sk", "", "Local SecKey") + passcode = flag.String("passcode", "", "Passcode to authenticate connecting users") + secure = flag.Bool("secure", true, "Forbid connections from clients to server local network") +) + +func main() { + if runtime.GOOS != "linux" { + log.Fatalln("OS is not supported") + } + + flag.Parse() + + localPK := cipher.PubKey{} + if *localPKStr != "" { + if err := localPK.UnmarshalText([]byte(*localPKStr)); err != nil { + log.WithError(err).Fatalln("Invalid local PK") + } + } + + localSK := cipher.SecKey{} + if *localSKStr != "" { + if err := localSK.UnmarshalText([]byte(*localSKStr)); err != nil { + log.WithError(err).Fatalln("Invalid local SK") + } + } + + appClient := app.NewClient(nil) + defer appClient.Close() + + osSigs := make(chan os.Signal, 2) + + sigs := []os.Signal{syscall.SIGTERM, syscall.SIGINT} + for _, sig := range sigs { + signal.Notify(osSigs, sig) + } + + l, err := appClient.Listen(netType, vpnPort) + if err != nil { + log.WithError(err).Errorf("Error listening network %v on port %d", netType, vpnPort) + return + } + + log.Infof("Got app listener, bound to %d", vpnPort) + + srvCfg := vpn.ServerConfig{ + Passcode: *passcode, + Secure: *secure, + } + srv, err := vpn.NewServer(srvCfg, log) + if err != nil { + log.WithError(err).Fatalln("Error creating VPN server") + } + defer func() { + if err := srv.Close(); err != nil { + log.WithError(err).Errorln("Error closing server") + } + }() + + errCh := make(chan error) + go func() { + if err := srv.Serve(l); err != nil { + errCh <- err + } + + close(errCh) + }() + + select { + case <-osSigs: + case err := <-errCh: + log.WithError(err).Errorln("Error serving") + } +} diff --git a/cmd/dmsg-server/commands/root.go b/cmd/dmsg-server/commands/root.go deleted file mode 100644 index 93ff627fbe..0000000000 --- a/cmd/dmsg-server/commands/root.go +++ /dev/null @@ -1,122 +0,0 @@ -package commands - -import ( - "bufio" - "encoding/json" - "io" - "log" - "log/syslog" - "net" - "net/http" - "os" - "path/filepath" - - "github.com/SkycoinProject/dmsg" - "github.com/SkycoinProject/dmsg/cipher" - "github.com/SkycoinProject/dmsg/disc" - "github.com/SkycoinProject/skycoin/src/util/logging" - "github.com/prometheus/client_golang/prometheus/promhttp" - logrussyslog "github.com/sirupsen/logrus/hooks/syslog" - "github.com/spf13/cobra" -) - -var ( - metricsAddr string - syslogAddr string - tag string - cfgFromStdin bool -) - -// Config is a DMSG server config -type Config struct { - PubKey cipher.PubKey `json:"public_key"` - SecKey cipher.SecKey `json:"secret_key"` - Discovery string `json:"discovery"` - LocalAddress string `json:"local_address"` - PublicAddress string `json:"public_address"` - LogLevel string `json:"log_level"` -} - -var rootCmd = &cobra.Command{ - Use: "dmsg-server [config.json]", - Short: "Dmsg Server for skywire", - Run: func(_ *cobra.Command, args []string) { - // Config - configFile := "config.json" - if len(args) > 0 { - configFile = args[0] - } - conf := parseConfig(configFile) - - // Logger - logger := logging.MustGetLogger(tag) - logLevel, err := logging.LevelFromString(conf.LogLevel) - if err != nil { - log.Fatal("Failed to parse LogLevel: ", err) - } - logging.SetLevel(logLevel) - - if syslogAddr != "" { - hook, err := logrussyslog.NewSyslogHook("udp", syslogAddr, syslog.LOG_INFO, tag) - if err != nil { - logger.Fatalf("Unable to connect to syslog daemon on %v", syslogAddr) - } - logging.AddHook(hook) - } - - // Metrics - go func() { - http.Handle("/metrics", promhttp.Handler()) - if err := http.ListenAndServe(metricsAddr, nil); err != nil { - logger.Println("Failed to start metrics API:", err) - } - }() - - l, err := net.Listen("tcp", conf.LocalAddress) - if err != nil { - logger.Fatalf("Error listening on %s: %v", conf.LocalAddress, err) - } - - // Start - srv, err := dmsg.NewServer(conf.PubKey, conf.SecKey, conf.PublicAddress, l, disc.NewHTTP(conf.Discovery)) - if err != nil { - logger.Fatalf("Error creating DMSG server instance: %v", err) - } - - log.Fatal(srv.Serve()) - }, -} - -func init() { - rootCmd.Flags().StringVarP(&metricsAddr, "metrics", "m", ":2121", "address to bind metrics API to") - rootCmd.Flags().StringVar(&syslogAddr, "syslog", "", "syslog server address. E.g. localhost:514") - rootCmd.Flags().StringVar(&tag, "tag", "dmsg-server", "logging tag") - rootCmd.Flags().BoolVarP(&cfgFromStdin, "stdin", "i", false, "read configuration from STDIN") -} - -func parseConfig(configFile string) *Config { - var rdr io.Reader - var err error - if !cfgFromStdin { - rdr, err = os.Open(filepath.Clean(configFile)) - if err != nil { - log.Fatalf("Failed to open config: %s", err) - } - } else { - rdr = bufio.NewReader(os.Stdin) - } - - conf := &Config{} - if err := json.NewDecoder(rdr).Decode(&conf); err != nil { - log.Fatalf("Failed to decode %s: %s", rdr, err) - } - - return conf -} - -// Execute executes root CLI command. -func Execute() { - if err := rootCmd.Execute(); err != nil { - log.Fatal(err) - } -} diff --git a/cmd/dmsg-server/dmsg-server.go b/cmd/dmsg-server/dmsg-server.go deleted file mode 100644 index c0cabf78c3..0000000000 --- a/cmd/dmsg-server/dmsg-server.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "github.com/SkycoinProject/skywire-mainnet/cmd/dmsg-server/commands" - -func main() { - commands.Execute() -} diff --git a/cmd/dmsgpty/commands/root.go b/cmd/dmsgpty/commands/root.go deleted file mode 100644 index 6f13031c3d..0000000000 --- a/cmd/dmsgpty/commands/root.go +++ /dev/null @@ -1,83 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - "log" - "strings" - - "github.com/SkycoinProject/dmsg/cipher" - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/internal/skyenv" - "github.com/SkycoinProject/skywire-mainnet/pkg/dmsgpty" -) - -var ptyCLI dmsgpty.CLI -var dstAddr string - -func init() { - ptyCLI.SetDefaults() - dstAddr = fmt.Sprintf("%s:%d", ptyCLI.DstPK, ptyCLI.DstPort) - - rootCmd.PersistentFlags().StringVar(&ptyCLI.Net, "cli-net", ptyCLI.Net, "network to use for dialing to dmsgpty-server") - rootCmd.PersistentFlags().StringVar(&ptyCLI.Addr, "cli-addr", ptyCLI.Addr, "address to use for dialing to dmsgpty-server") - - rootCmd.Flags().StringVarP(&dstAddr, "addr", "a", dstAddr, "destination address of pty request") - rootCmd.Flags().StringVarP(&ptyCLI.Cmd, "cmd", "c", ptyCLI.Cmd, "command to execute") - rootCmd.Flags().StringArrayVar(&ptyCLI.Arg, "arg", ptyCLI.Arg, "argument for command") -} - -var rootCmd = &cobra.Command{ - Use: "dmsgpty", - Short: "Run commands over dmsg", - PreRunE: func(*cobra.Command, []string) error { - return readDstAddr() - }, - RunE: func(*cobra.Command, []string) error { - return ptyCLI.RequestPty() - }, -} - -func readDstAddr() error { - parts := strings.Split(dstAddr, ":") - for i, part := range parts { - parts[i] = strings.TrimSpace(part) - } - - switch len(parts) { - case 0: - return nil - case 1: - var pk cipher.PubKey - if err := pk.Set(parts[0]); err != nil { - return err - } - ptyCLI.DstPK = pk - ptyCLI.DstPort = skyenv.DefaultDmsgPtyPort - return nil - case 2: - var pk cipher.PubKey - if len(parts[0]) > 0 && parts[0] != pk.String() { - if err := pk.Set(parts[0]); err != nil { - return err - } - } - var port uint16 - if _, err := fmt.Fscan(strings.NewReader(parts[1]), &port); err != nil { - return err - } - ptyCLI.DstPK = pk - ptyCLI.DstPort = port - return nil - default: - return errors.New("invalid addr") - } -} - -// Execute executes the root command. -func Execute() { - if err := rootCmd.Execute(); err != nil { - log.Fatal(err) - } -} diff --git a/cmd/dmsgpty/commands/whitelist.go b/cmd/dmsgpty/commands/whitelist.go deleted file mode 100644 index 19df7c97b3..0000000000 --- a/cmd/dmsgpty/commands/whitelist.go +++ /dev/null @@ -1,99 +0,0 @@ -package commands - -import ( - "errors" - "fmt" - "math/big" - "sort" - - "github.com/SkycoinProject/dmsg/cipher" - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/pkg/dmsgpty/ptycfg" -) - -func init() { - rootCmd.AddCommand( - whitelistCmd, - whitelistAddCmd, - whitelistRemoveCmd) -} - -var whitelistCmd = &cobra.Command{ - Use: "whitelist", - Short: "lists all whitelisted public keys", - RunE: func(_ *cobra.Command, _ []string) error { - conn, err := ptyCLI.RequestCfg() - if err != nil { - return err - } - pks, err := ptycfg.ViewWhitelist(conn) - if err != nil { - return err - } - sort.Slice(pks, func(i, j int) bool { - var a, b big.Int - a.SetBytes(pks[i][:]) - b.SetBytes(pks[j][:]) - return a.Cmp(&b) >= 0 - }) - for _, pk := range pks { - fmt.Println(pk) - } - return nil - }, -} - -var pk cipher.PubKey - -func init() { - whitelistAddCmd.Flags().Var(&pk, "pk", "public key of remote") -} - -var whitelistAddCmd = &cobra.Command{ - Use: "whitelist-add", - Short: "adds a public key to whitelist", - PreRunE: func(*cobra.Command, []string) error { - if pk.Null() { - return errors.New("cannot add a null public key to the whitelist") - } - return nil - }, - RunE: func(_ *cobra.Command, _ []string) error { - conn, err := ptyCLI.RequestCfg() - if err != nil { - return err - } - if err := ptycfg.WhitelistAdd(conn, pk); err != nil { - return fmt.Errorf("failed to add public key '%s' to the whitelist: %v", pk, err) - } - fmt.Println("OK") - return nil - }, -} - -func init() { - whitelistRemoveCmd.Flags().Var(&pk, "pk", "public key of remote") -} - -var whitelistRemoveCmd = &cobra.Command{ - Use: "whitelist-remove", - Short: "removes a public key from the whitelist", - PreRunE: func(*cobra.Command, []string) error { - if pk.Null() { - return errors.New("cannot add a null public key to the whitelist") - } - return nil - }, - RunE: func(_ *cobra.Command, _ []string) error { - conn, err := ptyCLI.RequestCfg() - if err != nil { - return err - } - if err := ptycfg.WhitelistRemove(conn, pk); err != nil { - return fmt.Errorf("failed to add public key '%s' to the whitelist: %v", pk, err) - } - fmt.Println("OK") - return nil - }, -} diff --git a/cmd/dmsgpty/dmsgpty.go b/cmd/dmsgpty/dmsgpty.go deleted file mode 100644 index 92ce4bb87e..0000000000 --- a/cmd/dmsgpty/dmsgpty.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "github.com/SkycoinProject/skywire-mainnet/cmd/dmsgpty/commands" - -func main() { - commands.Execute() -} diff --git a/cmd/hypervisor/README.md b/cmd/hypervisor/README.md deleted file mode 100644 index 929f636f3f..0000000000 --- a/cmd/hypervisor/README.md +++ /dev/null @@ -1,25 +0,0 @@ -# Hypervisor - -Hypervisor exposes node management operations via web API. - -**Generate config file:** - -```bash - -``` - -**Run with mock data:** - -```bash -# Generate config file. -$ hypervisor gen-config - -# Run. -$ hypervisor --mock -``` - -By default, the RESTful API is served on `:8080`. - -## Endpoints Documentation - -Endpoints are documented in the provided [Postman](https://www.getpostman.com/) file: `hypervisor.postman_collection.json`. diff --git a/cmd/hypervisor/commands/gen-config.go b/cmd/hypervisor/commands/gen-config.go deleted file mode 100644 index 4956e04e1d..0000000000 --- a/cmd/hypervisor/commands/gen-config.go +++ /dev/null @@ -1,53 +0,0 @@ -package commands - -import ( - "fmt" - "path/filepath" - - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/pkg/hypervisor" - "github.com/SkycoinProject/skywire-mainnet/pkg/util/pathutil" -) - -var ( - output string - replace bool - configLocType = pathutil.WorkingDirLoc -) - -func init() { - rootCmd.AddCommand(genConfigCmd) - genConfigCmd.Flags().StringVarP(&output, "output", "o", "", "path of output config file. Uses default of 'type' flag if unspecified.") - genConfigCmd.Flags().BoolVarP(&replace, "replace", "r", false, "whether to allow rewrite of a file that already exists.") - genConfigCmd.Flags().VarP(&configLocType, "type", "m", fmt.Sprintf("config generation mode. Valid values: %v", pathutil.AllConfigLocationTypes())) -} - -var genConfigCmd = &cobra.Command{ - Use: "gen-config", - Short: "generates a configuration file", - PreRun: func(_ *cobra.Command, _ []string) { - if output == "" { - output = pathutil.HypervisorDefaults().Get(configLocType) - log.Infof("no 'output,o' flag is empty, using default path: %s", output) - } - var err error - if output, err = filepath.Abs(output); err != nil { - log.WithError(err).Fatalln("invalid output provided") - } - }, - Run: func(_ *cobra.Command, _ []string) { - var conf hypervisor.Config - switch configLocType { - case pathutil.WorkingDirLoc: - conf = hypervisor.GenerateWorkDirConfig() - case pathutil.HomeLoc: - conf = hypervisor.GenerateHomeConfig() - case pathutil.LocalLoc: - conf = hypervisor.GenerateLocalConfig() - default: - log.Fatalln("invalid config type:", configLocType) - } - pathutil.WriteJSONConfig(conf, output, replace) - }, -} diff --git a/cmd/hypervisor/commands/root.go b/cmd/hypervisor/commands/root.go deleted file mode 100644 index 0b3046531d..0000000000 --- a/cmd/hypervisor/commands/root.go +++ /dev/null @@ -1,101 +0,0 @@ -package commands - -import ( - "fmt" - "net" - "net/http" - "os" - - "github.com/SkycoinProject/skycoin/src/util/logging" - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/pkg/hypervisor" - "github.com/SkycoinProject/skywire-mainnet/pkg/util/pathutil" -) - -const configEnv = "SW_HYPERVISOR_CONFIG" - -var ( - log = logging.MustGetLogger("hypervisor") - - configPath string - mock bool - mockEnableAuth bool - mockNodes int - mockMaxTps int - mockMaxRoutes int -) - -func init() { - rootCmd.Flags().StringVarP(&configPath, "config", "c", "./hypervisor-config.json", "hypervisor config path") - rootCmd.Flags().BoolVarP(&mock, "mock", "m", false, "whether to run hypervisor with mock data") - rootCmd.Flags().BoolVar(&mockEnableAuth, "mock-enable-auth", false, "whether to enable user management in mock mode") - rootCmd.Flags().IntVar(&mockNodes, "mock-nodes", 5, "number of app nodes to have in mock mode") - rootCmd.Flags().IntVar(&mockMaxTps, "mock-max-tps", 10, "max number of transports per mock app node") - rootCmd.Flags().IntVar(&mockMaxRoutes, "mock-max-routes", 30, "max number of routes per node") -} - -var rootCmd = &cobra.Command{ - Use: "hypervisor", - Short: "Manages Skywire App Nodes", - Run: func(_ *cobra.Command, args []string) { - if configPath == "" { - configPath = pathutil.FindConfigPath(args, -1, configEnv, pathutil.HypervisorDefaults()) - } - - var config hypervisor.Config - config.FillDefaults() - if err := config.Parse(configPath); err != nil { - log.WithError(err).Fatalln("failed to parse config file") - } - fmt.Println(config) - - var ( - httpAddr = config.Interfaces.HTTPAddr - rpcAddr = config.Interfaces.RPCAddr - ) - - m, err := hypervisor.NewNode(config) - if err != nil { - log.Fatalln("Failed to start hypervisor:", err) - } - - log.Infof("serving RPC on '%s'", rpcAddr) - go func() { - l, err := net.Listen("tcp", rpcAddr) - if err != nil { - log.Fatalln("Failed to bind tcp port:", err) - } - if err := m.ServeRPC(l); err != nil { - log.Fatalln("Failed to serve RPC:", err) - } - }() - - if mock { - err := m.AddMockData(hypervisor.MockConfig{ - Nodes: mockNodes, - MaxTpsPerNode: mockMaxTps, - MaxRoutesPerNode: mockMaxRoutes, - EnableAuth: mockEnableAuth, - }) - if err != nil { - log.Fatalln("Failed to add mock data:", err) - } - } - - log.Infof("serving HTTP on '%s'", httpAddr) - if err := http.ListenAndServe(httpAddr, m); err != nil { - log.Fatalln("Hypervisor exited with error:", err) - } - - log.Println("Good bye!") - }, -} - -// Execute executes root CLI command. -func Execute() { - if err := rootCmd.Execute(); err != nil { - fmt.Println(err) - os.Exit(1) - } -} diff --git a/cmd/hypervisor/hypervisor.go b/cmd/hypervisor/hypervisor.go deleted file mode 100644 index cde4e7977a..0000000000 --- a/cmd/hypervisor/hypervisor.go +++ /dev/null @@ -1,10 +0,0 @@ -/* -skywire hypervisor -*/ -package main - -import "github.com/SkycoinProject/skywire-mainnet/cmd/hypervisor/commands" - -func main() { - commands.Execute() -} diff --git a/cmd/setup-node/commands/root.go b/cmd/setup-node/commands/root.go index e9e32cba23..68af690a14 100644 --- a/cmd/setup-node/commands/root.go +++ b/cmd/setup-node/commands/root.go @@ -2,20 +2,22 @@ package commands import ( "bufio" + "context" "encoding/json" "io" - "log" - "log/syslog" - "net/http" + "io/ioutil" "os" - "github.com/SkycoinProject/skycoin/src/util/logging" - "github.com/prometheus/client_golang/prometheus/promhttp" - logrussyslog "github.com/sirupsen/logrus/hooks/syslog" + "github.com/sirupsen/logrus" + "github.com/skycoin/dmsg/buildinfo" + "github.com/skycoin/dmsg/cmdutil" + "github.com/skycoin/dmsg/metricsutil" + "github.com/skycoin/skycoin/src/util/logging" "github.com/spf13/cobra" - "github.com/SkycoinProject/skywire-mainnet/pkg/metrics" - "github.com/SkycoinProject/skywire-mainnet/pkg/setup" + "github.com/skycoin/skywire/pkg/setup" + "github.com/skycoin/skywire/pkg/setup/setupmetrics" + "github.com/skycoin/skywire/pkg/syslog" ) var ( @@ -25,17 +27,30 @@ var ( cfgFromStdin bool ) +func init() { + rootCmd.Flags().StringVarP(&metricsAddr, "metrics", "m", "", "address to bind metrics API to") + rootCmd.Flags().StringVar(&syslogAddr, "syslog", "", "syslog server address. E.g. localhost:514") + rootCmd.Flags().StringVar(&tag, "tag", "setup_node", "logging tag") + rootCmd.Flags().BoolVarP(&cfgFromStdin, "stdin", "i", false, "read config from STDIN") +} + var rootCmd = &cobra.Command{ Use: "setup-node [config.json]", Short: "Route Setup Node for skywire", Run: func(_ *cobra.Command, args []string) { + mLog := logging.NewMasterLogger() + log := logging.MustGetLogger(tag) + + if _, err := buildinfo.Get().WriteTo(mLog.Out); err != nil { + mLog.Printf("Failed to output build info: %v", err) + } - logger := logging.MustGetLogger(tag) if syslogAddr != "" { - hook, err := logrussyslog.NewSyslogHook("udp", syslogAddr, syslog.LOG_INFO, tag) + hook, err := syslog.SetupHook(syslogAddr, tag) if err != nil { - logger.Fatalf("Unable to connect to syslog daemon on %v", syslogAddr) + log.Fatalf("Error setting up syslog: %v", err) } + logging.AddHook(hook) } @@ -50,44 +65,59 @@ var rootCmd = &cobra.Command{ } rdr, err = os.Open(configFile) if err != nil { - log.Fatalf("Failed to open config: %s", err) + log.Fatalf("Failed to open config: %v", err) } } else { - logger.Info("Reading config from STDIN") + log.Info("Reading config from STDIN") rdr = bufio.NewReader(os.Stdin) } conf := &setup.Config{} - if err := json.NewDecoder(rdr).Decode(&conf); err != nil { - log.Fatalf("Failed to decode %s: %s", rdr, err) + + raw, err := ioutil.ReadAll(rdr) + if err != nil { + log.Fatalf("Failed to read config: %v", err) + } + + if err := json.Unmarshal(raw, &conf); err != nil { + log.WithField("raw", string(raw)).Fatalf("Failed to decode config: %s", err) } - sn, err := setup.NewNode(conf, metrics.NewPrometheus("setupnode")) + log.Infof("Config: %#v", conf) + + sn, err := setup.NewNode(conf) if err != nil { - logger.Fatal("Failed to setup Node: ", err) + log.Fatal("Failed to create a setup node: ", err) } - go func() { - http.Handle("/metrics", promhttp.Handler()) - if err := http.ListenAndServe(metricsAddr, nil); err != nil { - logger.Println("Failed to start metrics API:", err) - } - }() + m := prepareMetrics(log) + + ctx, cancel := cmdutil.SignalContext(context.Background(), log) + defer cancel() - logger.Fatal(sn.Serve()) + log.Fatal(sn.Serve(ctx, m)) }, } -func init() { - rootCmd.Flags().StringVarP(&metricsAddr, "metrics", "m", ":2121", "address to bind metrics API to") - rootCmd.Flags().StringVar(&syslogAddr, "syslog", "", "syslog server address. E.g. localhost:514") - rootCmd.Flags().StringVar(&tag, "tag", "setup-node", "logging tag") - rootCmd.Flags().BoolVarP(&cfgFromStdin, "stdin", "i", false, "read config from STDIN") +func prepareMetrics(log logrus.FieldLogger) setupmetrics.Metrics { + if metricsAddr == "" { + return setupmetrics.NewEmpty() + } + + m := setupmetrics.NewVictoriaMetrics() + + metricsutil.ServeHTTPMetrics(log, metricsAddr) + + // TODO (darkrengarius): implement these with Victoria Metrics somehow + //reg.MustRegister(prometheus.NewProcessCollector(prometheus.ProcessCollectorOpts{})) + //reg.MustRegister(prometheus.NewGoCollector()) + + return m } // Execute executes root CLI command. func Execute() { if err := rootCmd.Execute(); err != nil { - log.Fatal(err) + panic(err) } } diff --git a/cmd/setup-node/config.json b/cmd/setup-node/config.json deleted file mode 100644 index 5aac1fde43..0000000000 --- a/cmd/setup-node/config.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "public_key": "024ec47420176680816e0406250e7156465e4531f5b26057c9f6297bb0303558c7", - "secret_key": "42bca4df2f3189b28872d40e6c61aacd5e85b8e91f8fea65780af27c142419e5", - "dmsg": { - "discovery": "http://skywire.skycoin.net:8001", - "server_count": 1 - }, - "transport_discovery": "http://skywire.skycoin.net:8003", - "log_level": "info" -} diff --git a/cmd/setup-node/setup-node.go b/cmd/setup-node/setup-node.go index e882d663e2..6c0c4ee219 100644 --- a/cmd/setup-node/setup-node.go +++ b/cmd/setup-node/setup-node.go @@ -1,6 +1,8 @@ package main -import "github.com/SkycoinProject/skywire-mainnet/cmd/setup-node/commands" +import ( + "github.com/skycoin/skywire/cmd/setup-node/commands" +) func main() { commands.Execute() diff --git a/cmd/skywire-cli/commands/mdisc/root.go b/cmd/skywire-cli/commands/mdisc/root.go index 761cefba6b..aff26c1563 100644 --- a/cmd/skywire-cli/commands/mdisc/root.go +++ b/cmd/skywire-cli/commands/mdisc/root.go @@ -7,12 +7,11 @@ import ( "text/tabwriter" "time" - "github.com/SkycoinProject/skywire-mainnet/internal/skyenv" - - "github.com/SkycoinProject/dmsg/disc" + "github.com/skycoin/dmsg/disc" "github.com/spf13/cobra" - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/pkg/skyenv" ) var mdAddr string @@ -35,13 +34,13 @@ func init() { } var entryCmd = &cobra.Command{ - Use: "entry ", + Use: "entry ", Short: "fetches an entry from DMSG discovery", Args: cobra.MinimumNArgs(1), Run: func(_ *cobra.Command, args []string) { ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) defer cancel() - pk := internal.ParsePK("node-public-key", args[0]) + pk := internal.ParsePK("visor-public-key", args[0]) entry, err := disc.NewHTTP(mdAddr).Entry(ctx, pk) internal.Catch(err) fmt.Println(entry) @@ -62,11 +61,11 @@ var availableServersCmd = &cobra.Command{ func printAvailableServers(entries []*disc.Entry) { w := tabwriter.NewWriter(os.Stdout, 0, 0, 5, ' ', tabwriter.TabIndent) - _, err := fmt.Fprintln(w, "version\tregistered\tpublic-key\taddress\tport\tconns") + _, err := fmt.Fprintln(w, "version\tregistered\tpublic-key\taddress\tavailable-sessions") internal.Catch(err) for _, entry := range entries { - _, err := fmt.Fprintf(w, "%s\t%d\t%s\t%s\t%s\t%d\n", - entry.Version, entry.Timestamp, entry.Static, entry.Server.Address, entry.Server.Port, entry.Server.AvailableConnections) + _, err := fmt.Fprintf(w, "%s\t%d\t%s\t%s\t%d\n", + entry.Version, entry.Timestamp, entry.Static, entry.Server.Address, entry.Server.AvailableSessions) internal.Catch(err) } internal.Catch(w.Flush()) diff --git a/cmd/skywire-cli/commands/node/app.go b/cmd/skywire-cli/commands/node/app.go deleted file mode 100644 index 7fdb556132..0000000000 --- a/cmd/skywire-cli/commands/node/app.go +++ /dev/null @@ -1,124 +0,0 @@ -package node - -import ( - "fmt" - "os" - "strconv" - "strings" - "text/tabwriter" - "time" - - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/internal" - "github.com/SkycoinProject/skywire-mainnet/pkg/visor" -) - -func init() { - RootCmd.AddCommand( - lsAppsCmd, - startAppCmd, - stopAppCmd, - setAppAutostartCmd, - appLogsSinceCmd, - execCmd, - ) -} - -var lsAppsCmd = &cobra.Command{ - Use: "ls-apps", - Short: "Lists apps running on the local node", - Run: func(_ *cobra.Command, _ []string) { - states, err := rpcClient().Apps() - internal.Catch(err) - - w := tabwriter.NewWriter(os.Stdout, 0, 0, 5, ' ', tabwriter.TabIndent) - _, err = fmt.Fprintln(w, "app\tports\tauto_start\tstatus") - internal.Catch(err) - - for _, state := range states { - status := "stopped" - if state.Status == visor.AppStatusRunning { - status = "running" - } - _, err = fmt.Fprintf(w, "%s\t%s\t%t\t%s\n", state.Name, strconv.Itoa(int(state.Port)), state.AutoStart, status) - internal.Catch(err) - } - internal.Catch(w.Flush()) - }, -} - -var startAppCmd = &cobra.Command{ - Use: "start-app ", - Short: "Starts an app of given name", - Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { - internal.Catch(rpcClient().StartApp(args[0])) - fmt.Println("OK") - }, -} - -var stopAppCmd = &cobra.Command{ - Use: "stop-app ", - Short: "Stops an app of given name", - Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { - internal.Catch(rpcClient().StopApp(args[0])) - fmt.Println("OK") - }, -} - -var setAppAutostartCmd = &cobra.Command{ - Use: "set-app-autostart (on|off)", - Short: "Sets the autostart flag for an app of given name", - Args: cobra.MinimumNArgs(2), - Run: func(_ *cobra.Command, args []string) { - var autostart bool - switch args[1] { - case "on": - autostart = true - case "off": - autostart = false - default: - internal.Catch(fmt.Errorf("invalid args[1] value: %s", args[1])) - } - internal.Catch(rpcClient().SetAutoStart(args[0], autostart)) - fmt.Println("OK") - }, -} - -var appLogsSinceCmd = &cobra.Command{ - Use: "app-logs-since ", - Short: "Gets logs from given app since RFC3339Nano-formated timestamp. \"beginning\" is a special timestamp to fetch all the logs", - Args: cobra.MinimumNArgs(2), - Run: func(_ *cobra.Command, args []string) { - var t time.Time - - if args[1] == "beginning" { - t = time.Unix(0, 0) - } else { - var err error - strTime := args[1] - t, err = time.Parse(time.RFC3339Nano, strTime) - internal.Catch(err) - } - logs, err := rpcClient().LogsSince(t, args[0]) - internal.Catch(err) - if len(logs) > 0 { - fmt.Println(logs) - } else { - fmt.Println("no logs") - } - }, -} - -var execCmd = &cobra.Command{ - Use: "exec ", - Short: "Executes the given command", - Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { - out, err := rpcClient().Exec(strings.Join(args, " ")) - internal.Catch(err) - fmt.Print(string(out)) - }, -} diff --git a/cmd/skywire-cli/commands/node/gen-config.go b/cmd/skywire-cli/commands/node/gen-config.go deleted file mode 100644 index 346db2f18e..0000000000 --- a/cmd/skywire-cli/commands/node/gen-config.go +++ /dev/null @@ -1,211 +0,0 @@ -package node - -import ( - "errors" - "fmt" - "net" - "path/filepath" - "time" - - "github.com/SkycoinProject/skywire-mainnet/internal/skyenv" - "github.com/SkycoinProject/skywire-mainnet/pkg/routing" - - "github.com/SkycoinProject/dmsg/cipher" - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/pkg/util/pathutil" - "github.com/SkycoinProject/skywire-mainnet/pkg/visor" -) - -func init() { - RootCmd.AddCommand(genConfigCmd) -} - -var ( - output string - replace bool - configLocType = pathutil.WorkingDirLoc - testenv bool -) - -func init() { - genConfigCmd.Flags().StringVarP(&output, "output", "o", "", "path of output config file. Uses default of 'type' flag if unspecified.") - genConfigCmd.Flags().BoolVarP(&replace, "replace", "r", false, "whether to allow rewrite of a file that already exists.") - genConfigCmd.Flags().VarP(&configLocType, "type", "m", fmt.Sprintf("config generation mode. Valid values: %v", pathutil.AllConfigLocationTypes())) - genConfigCmd.Flags().BoolVarP(&testenv, "testing-environment", "t", false, "whether to use production or test deployment service.") -} - -var genConfigCmd = &cobra.Command{ - Use: "gen-config", - Short: "Generates a config file", - PreRun: func(_ *cobra.Command, _ []string) { - if output == "" { - output = pathutil.NodeDefaults().Get(configLocType) - log.Infof("No 'output' set; using default path: %s", output) - } - var err error - if output, err = filepath.Abs(output); err != nil { - log.WithError(err).Fatalln("invalid output provided") - } - }, - Run: func(_ *cobra.Command, _ []string) { - var conf *visor.Config - switch configLocType { - case pathutil.WorkingDirLoc: - conf = defaultConfig() - case pathutil.HomeLoc: - conf = homeConfig() - case pathutil.LocalLoc: - conf = localConfig() - default: - log.Fatalln("invalid config type:", configLocType) - } - pathutil.WriteJSONConfig(conf, output, replace) - }, -} - -func homeConfig() *visor.Config { - c := defaultConfig() - c.AppsPath = filepath.Join(pathutil.HomeDir(), ".skycoin/skywire/apps") - c.Transport.LogStore.Location = filepath.Join(pathutil.HomeDir(), ".skycoin/skywire/transport_logs") - return c -} - -func localConfig() *visor.Config { - c := defaultConfig() - c.AppsPath = "/usr/local/skycoin/skywire/apps" - c.Transport.LogStore.Location = "/usr/local/skycoin/skywire/transport_logs" - return c -} - -func defaultConfig() *visor.Config { - conf := &visor.Config{} - conf.Version = "1.0" - - pk, sk := cipher.GenerateKeyPair() - conf.Node.StaticPubKey = pk - conf.Node.StaticSecKey = sk - - lIPaddr, err := getLocalIPAddress() - if err != nil { - log.Warn(err) - } - - conf.STCP.LocalAddr = lIPaddr - - if testenv { - conf.Dmsg.Discovery = skyenv.TestDmsgDiscAddr - } else { - conf.Dmsg.Discovery = skyenv.DefaultDmsgDiscAddr - } - conf.Dmsg.ServerCount = 1 - - ptyConf := defaultDmsgPtyConfig() - conf.DmsgPty = &ptyConf - - // TODO(evanlinjin): We have disabled skysocks passcode by default for now - We should make a cli arg for this. - //passcode := base64.StdEncoding.Strict().EncodeToString(cipher.RandByte(8)) - conf.Apps = []visor.AppConfig{ - defaultSkychatConfig(), - defaultSkysocksConfig(""), - defaultSkysocksClientConfig(), - } - conf.TrustedNodes = []cipher.PubKey{} - - if testenv { - conf.Transport.Discovery = skyenv.TestTpDiscAddr - } else { - conf.Transport.Discovery = skyenv.DefaultTpDiscAddr - } - - conf.Transport.LogStore.Type = "file" - conf.Transport.LogStore.Location = "./skywire/transport_logs" - - if testenv { - conf.Routing.RouteFinder = skyenv.TestRouteFinderAddr - } else { - conf.Routing.RouteFinder = skyenv.DefaultRouteFinderAddr - } - - var sPK cipher.PubKey - if err := sPK.UnmarshalText([]byte(skyenv.DefaultSetupPK)); err != nil { - log.WithError(err).Warnf("Failed to unmarshal default setup node public key %s", skyenv.DefaultSetupPK) - } - conf.Routing.SetupNodes = []cipher.PubKey{sPK} - conf.Routing.RouteFinderTimeout = visor.Duration(10 * time.Second) - - conf.Hypervisors = []visor.HypervisorConfig{} - - conf.Uptime.Tracker = "" - - conf.AppsPath = "./apps" - conf.LocalPath = "./local" - - conf.LogLevel = "info" - - conf.ShutdownTimeout = visor.Duration(10 * time.Second) - - conf.Interfaces.RPCAddress = "localhost:3435" - - conf.AppServerSockFile = "/tmp/visor_" + pk.Hex() + ".sock" - - return conf -} - -func defaultDmsgPtyConfig() visor.DmsgPtyConfig { - return visor.DmsgPtyConfig{ - Port: skyenv.DefaultDmsgPtyPort, - AuthFile: "./skywire/dmsgpty/whitelist.json", - CLINet: skyenv.DefaultDmsgPtyCLINet, - CLIAddr: skyenv.DefaultDmsgPtyCLIAddr, - } -} - -func defaultSkychatConfig() visor.AppConfig { - return visor.AppConfig{ - App: skyenv.SkychatName, - Version: skyenv.SkychatVersion, - AutoStart: true, - Port: routing.Port(skyenv.SkychatPort), - Args: []string{"-addr", skyenv.SkychatAddr}, - } -} - -func defaultSkysocksConfig(passcode string) visor.AppConfig { - var args []string - if passcode != "" { - args = []string{"-passcode", passcode} - } - return visor.AppConfig{ - App: skyenv.SkysocksName, - Version: skyenv.SkysocksVersion, - AutoStart: true, - Port: routing.Port(skyenv.SkysocksPort), - Args: args, - } -} - -func defaultSkysocksClientConfig() visor.AppConfig { - return visor.AppConfig{ - App: skyenv.SkysocksClientName, - Version: skyenv.SkysocksClientVersion, - AutoStart: false, - Port: routing.Port(skyenv.SkysocksClientPort), - } -} - -func getLocalIPAddress() (string, error) { - addrs, err := net.InterfaceAddrs() - if err != nil { - return "", err - } - - for _, a := range addrs { - if ipnet, ok := a.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { - if ipnet.IP.To4() != nil { - return ipnet.IP.String() + ":7777", nil - } - } - } - return "", errors.New("could not find local IP address") -} diff --git a/cmd/skywire-cli/commands/node/pk.go b/cmd/skywire-cli/commands/node/pk.go deleted file mode 100644 index f87379b9e1..0000000000 --- a/cmd/skywire-cli/commands/node/pk.go +++ /dev/null @@ -1,26 +0,0 @@ -package node - -import ( - "fmt" - - "github.com/spf13/cobra" -) - -func init() { - RootCmd.AddCommand(pkCmd) -} - -var pkCmd = &cobra.Command{ - Use: "pk", - Short: "Obtains the public key of the node", - Run: func(_ *cobra.Command, _ []string) { - - client := rpcClient() - summary, err := client.Summary() - if err != nil { - log.Fatal("Failed to connect:", err) - } - - fmt.Println(summary.PubKey) - }, -} diff --git a/cmd/skywire-cli/commands/node/root.go b/cmd/skywire-cli/commands/node/root.go deleted file mode 100644 index 165d5d06bb..0000000000 --- a/cmd/skywire-cli/commands/node/root.go +++ /dev/null @@ -1,42 +0,0 @@ -package node - -import ( - "net" - "net/rpc" - "time" - - "github.com/SkycoinProject/skycoin/src/util/logging" - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/pkg/visor" -) - -var log = logging.MustGetLogger("skywire-cli") - -var rpcAddr string - -func init() { - RootCmd.PersistentFlags().StringVarP(&rpcAddr, "rpc", "", "localhost:3435", "RPC server address") -} - -// RootCmd contains commands that interact with the skywire-visor -var RootCmd = &cobra.Command{ - Use: "node", - Short: "Contains sub-commands that interact with the local Skywire Visor", -} - -func rpcClient() visor.RPCClient { - conn, err := net.DialTimeout("tcp", rpcAddr, rpcDialTimeout) - if err != nil { - log.Fatal("RPC connection failed:", err) - } - if err := conn.SetDeadline(time.Now().Add(rpcConnDuration)); err != nil { - log.Fatal("RPC connection failed:", err) - } - return visor.NewRPCClient(rpc.NewClient(conn), visor.RPCPrefix) -} - -const ( - rpcDialTimeout = time.Second * 5 - rpcConnDuration = time.Second * 60 -) diff --git a/cmd/skywire-cli/commands/node/transports.go b/cmd/skywire-cli/commands/node/transports.go deleted file mode 100644 index d6c4fc3756..0000000000 --- a/cmd/skywire-cli/commands/node/transports.go +++ /dev/null @@ -1,130 +0,0 @@ -package node - -import ( - "fmt" - "os" - "sort" - "text/tabwriter" - "time" - - "github.com/SkycoinProject/dmsg" - "github.com/SkycoinProject/dmsg/cipher" - "github.com/spf13/cobra" - - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/internal" - "github.com/SkycoinProject/skywire-mainnet/pkg/visor" -) - -func init() { - RootCmd.AddCommand( - lsTypesCmd, - lsTpCmd, - tpCmd, - addTpCmd, - rmTpCmd, - ) -} - -var lsTypesCmd = &cobra.Command{ - Use: "ls-types", - Short: "Lists transport types used by the local node", - Run: func(_ *cobra.Command, _ []string) { - types, err := rpcClient().TransportTypes() - internal.Catch(err) - for _, t := range types { - fmt.Println(t) - } - }, -} - -var ( - filterTypes []string - filterPubKeys cipher.PubKeys - showLogs bool -) - -func init() { - lsTpCmd.Flags().StringSliceVar(&filterTypes, "filter-types", filterTypes, "comma-separated; if specified, only shows transports of given types") - lsTpCmd.Flags().Var(&filterPubKeys, "filter-pks", "comma-separated; if specified, only shows transports associated with given nodes") - lsTpCmd.Flags().BoolVar(&showLogs, "show-logs", true, "whether to show transport logs in output") -} - -var lsTpCmd = &cobra.Command{ - Use: "ls-tp", - Short: "Lists the available transports with optional filter flags", - Run: func(_ *cobra.Command, _ []string) { - transports, err := rpcClient().Transports(filterTypes, filterPubKeys, showLogs) - internal.Catch(err) - printTransports(transports...) - }, -} - -var tpCmd = &cobra.Command{ - Use: "tp ", - Short: "Returns summary of given transport by id", - Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { - tpID := internal.ParseUUID("transport-id", args[0]) - tp, err := rpcClient().Transport(tpID) - internal.Catch(err) - printTransports(tp) - }, -} - -var ( - transportType string - public bool - timeout time.Duration -) - -func init() { - addTpCmd.Flags().StringVar(&transportType, "type", dmsg.Type, "type of transport to add") - addTpCmd.Flags().BoolVar(&public, "public", true, "whether to make the transport public") - addTpCmd.Flags().DurationVarP(&timeout, "timeout", "t", 0, "if specified, sets an operation timeout") -} - -var addTpCmd = &cobra.Command{ - Use: "add-tp ", - Short: "Adds a new transport", - Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { - pk := internal.ParsePK("remote-public-key", args[0]) - tp, err := rpcClient().AddTransport(pk, transportType, public, timeout) - internal.Catch(err) - printTransports(tp) - }, -} - -var rmTpCmd = &cobra.Command{ - Use: "rm-tp ", - Short: "Removes transport with given id", - Args: cobra.MinimumNArgs(1), - Run: func(_ *cobra.Command, args []string) { - tID := internal.ParseUUID("transport-id", args[0]) - internal.Catch(rpcClient().RemoveTransport(tID)) - fmt.Println("OK") - }, -} - -func printTransports(tps ...*visor.TransportSummary) { - sortTransports(tps...) - w := tabwriter.NewWriter(os.Stdout, 0, 0, 5, ' ', tabwriter.TabIndent) - _, err := fmt.Fprintln(w, "type\tid\tremote\tmode") - internal.Catch(err) - for _, tp := range tps { - tpMode := "regular" - if tp.IsSetup { - tpMode = "setup" - } - - _, err = fmt.Fprintf(w, "%s\t%s\t%s\t%s\n", tp.Type, tp.ID, tp.Remote, tpMode) - internal.Catch(err) - } - internal.Catch(w.Flush()) -} - -func sortTransports(tps ...*visor.TransportSummary) { - sort.Slice(tps, func(i, j int) bool { - return tps[i].ID.String() < tps[j].ID.String() - }) -} diff --git a/cmd/skywire-cli/commands/root.go b/cmd/skywire-cli/commands/root.go index 72a7713d25..4367812b5a 100644 --- a/cmd/skywire-cli/commands/root.go +++ b/cmd/skywire-cli/commands/root.go @@ -5,9 +5,9 @@ import ( "github.com/spf13/cobra" - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/commands/mdisc" - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/commands/node" - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/commands/rtfind" + "github.com/skycoin/skywire/cmd/skywire-cli/commands/mdisc" + "github.com/skycoin/skywire/cmd/skywire-cli/commands/rtfind" + "github.com/skycoin/skywire/cmd/skywire-cli/commands/visor" ) var rootCmd = &cobra.Command{ @@ -17,7 +17,7 @@ var rootCmd = &cobra.Command{ func init() { rootCmd.AddCommand( - node.RootCmd, + visor.RootCmd, mdisc.RootCmd, rtfind.RootCmd, ) diff --git a/cmd/skywire-cli/commands/rtfind/root.go b/cmd/skywire-cli/commands/rtfind/root.go index 98a1ab7840..29e29d35d0 100644 --- a/cmd/skywire-cli/commands/rtfind/root.go +++ b/cmd/skywire-cli/commands/rtfind/root.go @@ -4,15 +4,14 @@ import ( "fmt" "time" - "github.com/SkycoinProject/skywire-mainnet/internal/skyenv" - "github.com/SkycoinProject/skywire-mainnet/pkg/routefinder/rfclient" - "github.com/SkycoinProject/skywire-mainnet/pkg/routing" - - "github.com/SkycoinProject/dmsg/cipher" + "github.com/skycoin/dmsg/cipher" "github.com/spf13/cobra" "golang.org/x/net/context" - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/pkg/routefinder/rfclient" + "github.com/skycoin/skywire/pkg/routing" + "github.com/skycoin/skywire/pkg/skyenv" ) var frAddr string @@ -28,8 +27,8 @@ func init() { // RootCmd is the command that queries the route finder. var RootCmd = &cobra.Command{ - Use: "rtfind ", - Short: "Queries the Route Finder for available routes between two nodes", + Use: "rtfind ", + Short: "Queries the Route Finder for available routes between two visors", Args: cobra.MinimumNArgs(2), Run: func(_ *cobra.Command, args []string) { rfc := rfclient.NewHTTP(frAddr, timeout) diff --git a/cmd/skywire-cli/commands/visor/app.go b/cmd/skywire-cli/commands/visor/app.go new file mode 100644 index 0000000000..567e5ccef3 --- /dev/null +++ b/cmd/skywire-cli/commands/visor/app.go @@ -0,0 +1,124 @@ +package visor + +import ( + "fmt" + "os" + "strconv" + "strings" + "text/tabwriter" + "time" + + "github.com/spf13/cobra" + + "github.com/skycoin/skywire/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/pkg/app/launcher" +) + +func init() { + RootCmd.AddCommand( + lsAppsCmd, + startAppCmd, + stopAppCmd, + setAppAutostartCmd, + appLogsSinceCmd, + execCmd, + ) +} + +var lsAppsCmd = &cobra.Command{ + Use: "ls-apps", + Short: "Lists apps running on the local visor", + Run: func(_ *cobra.Command, _ []string) { + states, err := rpcClient().Apps() + internal.Catch(err) + + w := tabwriter.NewWriter(os.Stdout, 0, 0, 5, ' ', tabwriter.TabIndent) + _, err = fmt.Fprintln(w, "app\tports\tauto_start\tstatus") + internal.Catch(err) + + for _, state := range states { + status := "stopped" + if state.Status == launcher.AppStatusRunning { + status = "running" + } + _, err = fmt.Fprintf(w, "%s\t%s\t%t\t%s\n", state.Name, strconv.Itoa(int(state.Port)), state.AutoStart, status) + internal.Catch(err) + } + internal.Catch(w.Flush()) + }, +} + +var startAppCmd = &cobra.Command{ + Use: "start-app ", + Short: "Starts an app of given name", + Args: cobra.MinimumNArgs(1), + Run: func(_ *cobra.Command, args []string) { + internal.Catch(rpcClient().StartApp(args[0])) + fmt.Println("OK") + }, +} + +var stopAppCmd = &cobra.Command{ + Use: "stop-app ", + Short: "Stops an app of given name", + Args: cobra.MinimumNArgs(1), + Run: func(_ *cobra.Command, args []string) { + internal.Catch(rpcClient().StopApp(args[0])) + fmt.Println("OK") + }, +} + +var setAppAutostartCmd = &cobra.Command{ + Use: "set-app-autostart (on|off)", + Short: "Sets the autostart flag for an app of given name", + Args: cobra.MinimumNArgs(2), + Run: func(_ *cobra.Command, args []string) { + var autostart bool + switch args[1] { + case "on": + autostart = true + case "off": + autostart = false + default: + internal.Catch(fmt.Errorf("invalid args[1] value: %s", args[1])) + } + internal.Catch(rpcClient().SetAutoStart(args[0], autostart)) + fmt.Println("OK") + }, +} + +var appLogsSinceCmd = &cobra.Command{ + Use: "app-logs-since ", + Short: "Gets logs from given app since RFC3339Nano-formated timestamp. \"beginning\" is a special timestamp to fetch all the logs", + Args: cobra.MinimumNArgs(2), + Run: func(_ *cobra.Command, args []string) { + var t time.Time + + if args[1] == "beginning" { + t = time.Unix(0, 0) + } else { + var err error + strTime := args[1] + t, err = time.Parse(time.RFC3339Nano, strTime) + internal.Catch(err) + } + logs, err := rpcClient().LogsSince(t, args[0]) + internal.Catch(err) + if len(logs) > 0 { + fmt.Println(logs) + } else { + fmt.Println("no logs") + } + }, +} + +var execCmd = &cobra.Command{ + Use: "exec ", + Short: "Executes the given command", + Args: cobra.MinimumNArgs(1), + Run: func(_ *cobra.Command, args []string) { + out, err := rpcClient().Exec(strings.Join(args, " ")) + internal.Catch(err) + fmt.Print(string(out)) + }, +} diff --git a/cmd/skywire-cli/commands/visor/gen-config.go b/cmd/skywire-cli/commands/visor/gen-config.go new file mode 100644 index 0000000000..265f60eb68 --- /dev/null +++ b/cmd/skywire-cli/commands/visor/gen-config.go @@ -0,0 +1,128 @@ +package visor + +import ( + "encoding/json" + "io/ioutil" + "os" + "path/filepath" + "strings" + + "github.com/sirupsen/logrus" + "github.com/skycoin/dmsg/cipher" + coinCipher "github.com/skycoin/skycoin/src/cipher" + "github.com/skycoin/skycoin/src/util/logging" + "github.com/spf13/cobra" + + "github.com/skycoin/skywire/pkg/visor/visorconfig" +) + +func init() { + RootCmd.AddCommand(genConfigCmd) +} + +var ( + sk cipher.SecKey + output string + replace bool + testEnv bool + packageConfig bool + hypervisor bool + hypervisorPKs string +) + +func init() { + genConfigCmd.Flags().Var(&sk, "sk", "if unspecified, a random key pair will be generated.") + genConfigCmd.Flags().StringVarP(&output, "output", "o", "skywire-config.json", "path of output config file.") + genConfigCmd.Flags().BoolVarP(&replace, "replace", "r", false, "whether to allow rewrite of a file that already exists (this retains the keys).") + genConfigCmd.Flags().BoolVarP(&packageConfig, "package", "p", false, "use defaults for package-based installations") + genConfigCmd.Flags().BoolVarP(&testEnv, "testenv", "t", false, "whether to use production or test deployment service.") + genConfigCmd.Flags().BoolVar(&hypervisor, "is-hypervisor", false, "whether to generate config to run this visor as a hypervisor.") + genConfigCmd.Flags().StringVar(&hypervisorPKs, "hypervisor-pks", "", "public keys of hypervisors that should be added to this visor") +} + +var genConfigCmd = &cobra.Command{ + Use: "gen-config", + Short: "Generates a config file", + PreRun: func(_ *cobra.Command, _ []string) { + var err error + if output, err = filepath.Abs(output); err != nil { + logger.WithError(err).Fatal("Invalid output provided.") + } + }, + Run: func(_ *cobra.Command, _ []string) { + mLog := logging.NewMasterLogger() + mLog.SetLevel(logrus.InfoLevel) + + // Read in old config (if any) and obtain old secret key. + // Otherwise, we generate a new random secret key. + var sk cipher.SecKey + if oldConf, ok := readOldConfig(mLog, output, replace); !ok { + _, sk = cipher.GenerateKeyPair() + } else { + sk = oldConf.SK + } + + // Determine config type to generate. + var genConf func(log *logging.MasterLogger, confPath string, sk *cipher.SecKey, hypervisor bool) (*visorconfig.V1, error) + + // to be improved later + if packageConfig { + genConf = visorconfig.MakePackageConfig + } else if testEnv { + genConf = visorconfig.MakeTestConfig + } else { + genConf = visorconfig.MakeDefaultConfig + } + + // Generate config. + conf, err := genConf(mLog, output, &sk, hypervisor) + if err != nil { + logger.WithError(err).Fatal("Failed to create config.") + } + + if hypervisorPKs != "" { + keys := strings.Split(hypervisorPKs, ",") + for _, key := range keys { + keyParsed, err := coinCipher.PubKeyFromHex(strings.TrimSpace(key)) + if err != nil { + logger.WithError(err).Fatalf("Failed to parse hypervisor private key: %s.", key) + } + conf.Hypervisors = append(conf.Hypervisors, cipher.PubKey(keyParsed)) + } + + } + + // Save config to file. + if err := conf.Flush(); err != nil { + logger.WithError(err).Fatal("Failed to flush config to file.") + } + + // Print results. + j, err := json.MarshalIndent(conf, "", "\t") + if err != nil { + logger.WithError(err).Fatal("An unexpected error occurred. Please contact a developer.") + } + logger.Infof("Updated file '%s' to: %s", output, j) + }, +} + +func readOldConfig(log *logging.MasterLogger, confPath string, replace bool) (*visorconfig.V1, bool) { + raw, err := ioutil.ReadFile(confPath) //nolint:gosec + if err != nil { + if os.IsNotExist(err) { + return nil, false + } + logger.WithError(err).Fatal("Unexpected error occurred when attempting to read old config.") + } + + if !replace { + logger.Fatal("Config file already exists. Specify the 'replace,r' flag to replace this.") + } + + conf, err := visorconfig.Parse(log, confPath, raw) + if err != nil { + logger.WithError(err).Fatal("Failed to parse old config file.") + } + + return conf, true +} diff --git a/cmd/skywire-cli/commands/visor/pk.go b/cmd/skywire-cli/commands/visor/pk.go new file mode 100644 index 0000000000..fef9f21397 --- /dev/null +++ b/cmd/skywire-cli/commands/visor/pk.go @@ -0,0 +1,26 @@ +package visor + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +func init() { + RootCmd.AddCommand(pkCmd) +} + +var pkCmd = &cobra.Command{ + Use: "pk", + Short: "Obtains the public key of the visor", + Run: func(_ *cobra.Command, _ []string) { + + client := rpcClient() + overview, err := client.Overview() + if err != nil { + logger.Fatal("Failed to connect:", err) + } + + fmt.Println(overview.PubKey) + }, +} diff --git a/cmd/skywire-cli/commands/visor/root.go b/cmd/skywire-cli/commands/visor/root.go new file mode 100644 index 0000000000..a3bd5404a9 --- /dev/null +++ b/cmd/skywire-cli/commands/visor/root.go @@ -0,0 +1,35 @@ +package visor + +import ( + "net" + "time" + + "github.com/skycoin/skycoin/src/util/logging" + "github.com/spf13/cobra" + + "github.com/skycoin/skywire/pkg/visor" +) + +var logger = logging.MustGetLogger("skywire-cli") + +var rpcAddr string + +func init() { + RootCmd.PersistentFlags().StringVarP(&rpcAddr, "rpc", "", "localhost:3435", "RPC server address") +} + +// RootCmd contains commands that interact with the skywire-visor +var RootCmd = &cobra.Command{ + Use: "visor", + Short: "Contains sub-commands that interact with the local Skywire Visor", +} + +func rpcClient() visor.API { + const rpcDialTimeout = time.Second * 5 + + conn, err := net.DialTimeout("tcp", rpcAddr, rpcDialTimeout) + if err != nil { + logger.Fatal("RPC connection failed:", err) + } + return visor.NewRPCClient(logger, conn, visor.RPCPrefix, 0) +} diff --git a/cmd/skywire-cli/commands/node/routes.go b/cmd/skywire-cli/commands/visor/routes.go similarity index 94% rename from cmd/skywire-cli/commands/node/routes.go rename to cmd/skywire-cli/commands/visor/routes.go index b12db1bfd0..17590e7e56 100644 --- a/cmd/skywire-cli/commands/node/routes.go +++ b/cmd/skywire-cli/commands/visor/routes.go @@ -1,4 +1,4 @@ -package node +package visor import ( "errors" @@ -11,9 +11,9 @@ import ( "github.com/spf13/cobra" - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/internal" - "github.com/SkycoinProject/skywire-mainnet/pkg/router" - "github.com/SkycoinProject/skywire-mainnet/pkg/routing" + "github.com/skycoin/skywire/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/pkg/router" + "github.com/skycoin/skywire/pkg/routing" ) func init() { @@ -27,7 +27,7 @@ func init() { var lsRulesCmd = &cobra.Command{ Use: "ls-rules", - Short: "Lists the local node's routing rules", + Short: "Lists the local visor's routing rules", Run: func(_ *cobra.Command, _ []string) { rules, err := rpcClient().RoutingRules() internal.Catch(err) diff --git a/cmd/skywire-cli/commands/node/transport_discovery.go b/cmd/skywire-cli/commands/visor/transport_discovery.go similarity index 92% rename from cmd/skywire-cli/commands/node/transport_discovery.go rename to cmd/skywire-cli/commands/visor/transport_discovery.go index 9daa115eb7..e16c359ae6 100644 --- a/cmd/skywire-cli/commands/node/transport_discovery.go +++ b/cmd/skywire-cli/commands/visor/transport_discovery.go @@ -1,4 +1,4 @@ -package node +package visor import ( "errors" @@ -6,12 +6,12 @@ import ( "os" "text/tabwriter" - "github.com/SkycoinProject/dmsg/cipher" "github.com/google/uuid" + "github.com/skycoin/dmsg/cipher" "github.com/spf13/cobra" - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/internal" - "github.com/SkycoinProject/skywire-mainnet/pkg/transport" + "github.com/skycoin/skywire/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/pkg/transport" ) func init() { diff --git a/cmd/skywire-cli/commands/visor/transports.go b/cmd/skywire-cli/commands/visor/transports.go new file mode 100644 index 0000000000..c95c482078 --- /dev/null +++ b/cmd/skywire-cli/commands/visor/transports.go @@ -0,0 +1,169 @@ +package visor + +import ( + "fmt" + "os" + "sort" + "text/tabwriter" + "time" + + "github.com/skycoin/dmsg" + "github.com/skycoin/dmsg/cipher" + "github.com/spf13/cobra" + + "github.com/skycoin/skywire/cmd/skywire-cli/internal" + "github.com/skycoin/skywire/pkg/snet/directtp/tptypes" + "github.com/skycoin/skywire/pkg/visor" +) + +func init() { + RootCmd.AddCommand( + lsTypesCmd, + lsTpCmd, + tpCmd, + addTpCmd, + rmTpCmd, + ) +} + +var lsTypesCmd = &cobra.Command{ + Use: "ls-types", + Short: "Lists transport types used by the local visor", + Run: func(_ *cobra.Command, _ []string) { + types, err := rpcClient().TransportTypes() + internal.Catch(err) + for _, t := range types { + fmt.Println(t) + } + }, +} + +var ( + filterTypes []string + filterPubKeys cipher.PubKeys + showLogs bool +) + +func init() { + lsTpCmd.Flags().StringSliceVar(&filterTypes, "filter-types", filterTypes, "comma-separated; if specified, only shows transports of given types") + lsTpCmd.Flags().Var(&filterPubKeys, "filter-pks", "comma-separated; if specified, only shows transports associated with given visors") + lsTpCmd.Flags().BoolVar(&showLogs, "show-logs", true, "whether to show transport logs in output") +} + +var lsTpCmd = &cobra.Command{ + Use: "ls-tp", + Short: "Lists the available transports with optional filter flags", + Run: func(_ *cobra.Command, _ []string) { + transports, err := rpcClient().Transports(filterTypes, filterPubKeys, showLogs) + internal.Catch(err) + printTransports(transports...) + }, +} + +var tpCmd = &cobra.Command{ + Use: "tp ", + Short: "Returns summary of given transport by id", + Args: cobra.MinimumNArgs(1), + Run: func(_ *cobra.Command, args []string) { + tpID := internal.ParseUUID("transport-id", args[0]) + tp, err := rpcClient().Transport(tpID) + internal.Catch(err) + printTransports(tp) + }, +} + +var ( + transportType string + public bool + timeout time.Duration +) + +func init() { + const ( + typeFlagUsage = "type of transport to add; if unspecified, cli will attempt to establish a transport " + + "in the following order: stcp, stcpr, sudph, dmsg" + publicFlagUsage = "whether to make the transport public" + timeoutFlagUsage = "if specified, sets an operation timeout" + ) + + addTpCmd.Flags().StringVar(&transportType, "type", "", typeFlagUsage) + addTpCmd.Flags().BoolVar(&public, "public", true, publicFlagUsage) + addTpCmd.Flags().DurationVarP(&timeout, "timeout", "t", 0, timeoutFlagUsage) +} + +var addTpCmd = &cobra.Command{ + Use: "add-tp ", + Short: "Adds a new transport", + Args: cobra.MinimumNArgs(1), + Run: func(_ *cobra.Command, args []string) { + pk := internal.ParsePK("remote-public-key", args[0]) + + var tp *visor.TransportSummary + var err error + + if transportType != "" { + tp, err = rpcClient().AddTransport(pk, transportType, public, timeout) + if err != nil { + logger.WithError(err).Fatalf("Failed to establish %v transport", transportType) + } + + if !tp.IsUp { + logger.Fatalf("Established %v transport to %v with ID %v, but it isn't up", transportType, pk, tp.ID) + } + + logger.Infof("Established %v transport to %v", transportType, pk) + } else { + transportTypes := []string{ + tptypes.STCP, + tptypes.STCPR, + tptypes.SUDPH, + dmsg.Type, + } + + for _, transportType := range transportTypes { + tp, err = rpcClient().AddTransport(pk, transportType, public, timeout) + if err == nil { + logger.Infof("Established %v transport to %v", transportType, pk) + break + } + + logger.WithError(err).Warnf("Failed to establish %v transport", transportType) + } + } + + printTransports(tp) + }, +} + +var rmTpCmd = &cobra.Command{ + Use: "rm-tp ", + Short: "Removes transport with given id", + Args: cobra.MinimumNArgs(1), + Run: func(_ *cobra.Command, args []string) { + tID := internal.ParseUUID("transport-id", args[0]) + internal.Catch(rpcClient().RemoveTransport(tID)) + fmt.Println("OK") + }, +} + +func printTransports(tps ...*visor.TransportSummary) { + sortTransports(tps...) + w := tabwriter.NewWriter(os.Stdout, 0, 0, 5, ' ', tabwriter.TabIndent) + _, err := fmt.Fprintln(w, "type\tid\tremote\tmode\tlabel\tis_up") + internal.Catch(err) + for _, tp := range tps { + tpMode := "regular" + if tp.IsSetup { + tpMode = "setup" + } + _, err = fmt.Fprintf(w, "%s\t%s\t%s\t%s\t%s\t%v\n", tp.Type, tp.ID, tp.Remote, tpMode, tp.Label, tp.IsUp) + internal.Catch(err) + } + internal.Catch(w.Flush()) +} + +func sortTransports(tps ...*visor.TransportSummary) { + sort.Slice(tps, func(i, j int) bool { + return tps[i].ID.String() < tps[j].ID.String() + }) +} diff --git a/cmd/skywire-cli/commands/visor/update-config.go b/cmd/skywire-cli/commands/visor/update-config.go new file mode 100644 index 0000000000..14678776f8 --- /dev/null +++ b/cmd/skywire-cli/commands/visor/update-config.go @@ -0,0 +1,103 @@ +package visor + +import ( + "encoding/json" + "io/ioutil" + "os" + "path/filepath" + "strings" + + "github.com/sirupsen/logrus" + "github.com/skycoin/dmsg/cipher" + coinCipher "github.com/skycoin/skycoin/src/cipher" + "github.com/skycoin/skycoin/src/util/logging" + "github.com/spf13/cobra" + + "github.com/skycoin/skywire/pkg/visor/visorconfig" +) + +func init() { + RootCmd.AddCommand(updateConfigCmd) +} + +var ( + addOutput string + addInput string + environment string + resetHypervisor bool + addHypervisorPKs string +) + +func init() { + updateConfigCmd.Flags().StringVarP(&addOutput, "output", "o", "skywire-config.json", "path of output config file.") + updateConfigCmd.Flags().StringVarP(&addInput, "input", "i", "skywire-config.json", "path of input config file.") + updateConfigCmd.Flags().StringVarP(&environment, "environment", "e", "production", "desired environment (values production or testing)") + updateConfigCmd.Flags().StringVar(&addHypervisorPKs, "add-hypervisor-pks", "", "public keys of hypervisors that should be added to this visor") + updateConfigCmd.Flags().BoolVar(&resetHypervisor, "reset-hypervisor-pks", false, "resets hypervisor`s configuration") +} + +var updateConfigCmd = &cobra.Command{ + Use: "update-config", + Short: "Updates a config file", + PreRun: func(_ *cobra.Command, _ []string) { + var err error + if output, err = filepath.Abs(addOutput); err != nil { + logger.WithError(err).Fatal("Invalid output provided.") + } + }, + Run: func(_ *cobra.Command, _ []string) { + mLog := logging.NewMasterLogger() + mLog.SetLevel(logrus.InfoLevel) + f, err := os.Open(addInput) // nolint: gosec + if err != nil { + mLog.WithError(err). + WithField("filepath", addInput). + Fatal("Failed to read config file.") + } + + raw, err := ioutil.ReadAll(f) + if err != nil { + mLog.WithError(err).Fatal("Failed to read config.") + } + + conf, ok := visorconfig.Parse(mLog, addInput, raw) + if ok != nil { + mLog.WithError(err).Fatal("Failed to parse config.") + } + + if addHypervisorPKs != "" { + keys := strings.Split(addHypervisorPKs, ",") + for _, key := range keys { + keyParsed, err := coinCipher.PubKeyFromHex(strings.TrimSpace(key)) + if err != nil { + logger.WithError(err).Fatalf("Failed to parse hypervisor private key: %s.", key) + } + conf.Hypervisors = append(conf.Hypervisors, cipher.PubKey(keyParsed)) + } + } + + if environment == "production" { + visorconfig.SetDefaultProductionValues(conf) + } + + if environment == "testing" { + visorconfig.SetDefaultTestingValues(conf) + } + + if resetHypervisor { + conf.Hypervisors = []cipher.PubKey{} + } + + // Save config to file. + if err := conf.Flush(); err != nil { + logger.WithError(err).Fatal("Failed to flush config to file.") + } + + // Print results. + j, err := json.MarshalIndent(conf, "", "\t") + if err != nil { + logger.WithError(err).Fatal("An unexpected error occurred. Please contact a developer.") + } + logger.Infof("Updated file '%s' to: %s", output, j) + }, +} diff --git a/cmd/skywire-cli/commands/visor/version.go b/cmd/skywire-cli/commands/visor/version.go new file mode 100644 index 0000000000..b8c905fe6d --- /dev/null +++ b/cmd/skywire-cli/commands/visor/version.go @@ -0,0 +1,28 @@ +package visor + +import ( + "log" + "os" + + "github.com/spf13/cobra" +) + +func init() { + RootCmd.AddCommand(buildInfoCmd) +} + +var buildInfoCmd = &cobra.Command{ + Use: "version", + Short: "Obtains version and build info of the node", + Run: func(_ *cobra.Command, _ []string) { + client := rpcClient() + overview, err := client.Overview() + if err != nil { + log.Fatal("Failed to connect:", err) + } + + if _, err := overview.BuildInfo.WriteTo(os.Stdout); err != nil { + log.Fatal("Failed to output build info:", err) + } + }, +} diff --git a/cmd/skywire-cli/internal/internal.go b/cmd/skywire-cli/internal/internal.go index e79539cea0..839bd31293 100644 --- a/cmd/skywire-cli/internal/internal.go +++ b/cmd/skywire-cli/internal/internal.go @@ -3,9 +3,9 @@ package internal import ( "fmt" - "github.com/SkycoinProject/dmsg/cipher" - "github.com/SkycoinProject/skycoin/src/util/logging" "github.com/google/uuid" + "github.com/skycoin/dmsg/cipher" + "github.com/skycoin/skycoin/src/util/logging" ) var log = logging.MustGetLogger("skywire-cli") diff --git a/cmd/skywire-cli/skywire-cli.go b/cmd/skywire-cli/skywire-cli.go index 66d50e0a3d..c88ba1329e 100644 --- a/cmd/skywire-cli/skywire-cli.go +++ b/cmd/skywire-cli/skywire-cli.go @@ -1,10 +1,7 @@ -/* -CLI for skywire visor -*/ package main import ( - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-cli/commands" + "github.com/skycoin/skywire/cmd/skywire-cli/commands" ) func main() { diff --git a/cmd/skywire-visor/commands/root.go b/cmd/skywire-visor/commands/root.go index db2061ceb5..f85a4c74c6 100644 --- a/cmd/skywire-visor/commands/root.go +++ b/cmd/skywire-visor/commands/root.go @@ -1,240 +1,309 @@ package commands import ( - "bufio" "context" - "encoding/json" + "embed" "fmt" "io" + "io/fs" "io/ioutil" - "log" - "log/syslog" "net/http" + _ "net/http/pprof" // nolint:gosec // https://golang.org/doc/diagnostics.html#profiling "os" - "os/signal" - "path/filepath" + "os/exec" "strings" "syscall" "time" - "github.com/SkycoinProject/skycoin/src/util/logging" "github.com/pkg/profile" - logrussyslog "github.com/sirupsen/logrus/hooks/syslog" + "github.com/skycoin/dmsg/buildinfo" + "github.com/skycoin/dmsg/cmdutil" + "github.com/skycoin/skycoin/src/util/logging" "github.com/spf13/cobra" + "github.com/toqueteos/webbrowser" - "github.com/SkycoinProject/skywire-mainnet/internal/utclient" - "github.com/SkycoinProject/skywire-mainnet/pkg/restart" - "github.com/SkycoinProject/skywire-mainnet/pkg/util/pathutil" - "github.com/SkycoinProject/skywire-mainnet/pkg/visor" + "github.com/skycoin/skywire/pkg/restart" + "github.com/skycoin/skywire/pkg/syslog" + "github.com/skycoin/skywire/pkg/visor" + "github.com/skycoin/skywire/pkg/visor/logstore" + "github.com/skycoin/skywire/pkg/visor/visorconfig" ) -// TODO(evanlinjin): Determine if this is still needed. -//import _ "net/http/pprof" // used for HTTP profiling - -const configEnv = "SW_CONFIG" -const defaultShutdownTimeout = visor.Duration(10 * time.Second) - -type runCfg struct { - syslogAddr string - tag string - cfgFromStdin bool - profileMode string - port string - startDelay string - args []string - - profileStop func() - logger *logging.Logger - masterLogger *logging.MasterLogger - conf visor.Config - node *visor.Node - restartCtx *restart.Context -} +var uiAssets fs.FS + +var restartCtx = restart.CaptureContext() + +const ( + defaultConfigName = "skywire-config.json" + runtimeLogMaxEntries = 300 +) + +var ( + tag string + syslogAddr string + pprofMode string + pprofAddr string + confPath string + delay string + launchBrowser bool +) -var cfg *runCfg +func init() { + rootCmd.Flags().StringVar(&tag, "tag", "skywire", "logging tag") + rootCmd.Flags().StringVar(&syslogAddr, "syslog", "", "syslog server address. E.g. localhost:514") + rootCmd.Flags().StringVarP(&pprofMode, "pprofmode", "p", "", "pprof profiling mode. Valid values: cpu, mem, mutex, block, trace, http") + rootCmd.Flags().StringVar(&pprofAddr, "pprofaddr", "localhost:6060", "pprof http port if mode is 'http'") + rootCmd.Flags().StringVarP(&confPath, "config", "c", "", "config file location. If the value is 'STDIN', config file will be read from stdin.") + rootCmd.Flags().StringVar(&delay, "delay", "0ns", "start delay (deprecated)") // deprecated + rootCmd.Flags().BoolVar(&launchBrowser, "launch-browser", false, "open hypervisor web ui (hypervisor only) with system browser") +} var rootCmd = &cobra.Command{ - Use: "skywire-visor [config-path]", - Short: "Visor for skywire", + Use: "skywire-visor", + Short: "Skywire visor", Run: func(_ *cobra.Command, args []string) { - cfg.args = args - - cfg.startProfiler(). - startLogger(). - readConfig(). - runNode(). - waitOsSignals(). - stopNode() - }, - Version: visor.Version, -} + log := initLogger(tag, syslogAddr) + store, hook := logstore.MakeStore(runtimeLogMaxEntries) + log.AddHook(hook) -func init() { - cfg = &runCfg{} - rootCmd.Flags().StringVarP(&cfg.syslogAddr, "syslog", "", "none", "syslog server address. E.g. localhost:514") - rootCmd.Flags().StringVarP(&cfg.tag, "tag", "", "skywire", "logging tag") - rootCmd.Flags().BoolVarP(&cfg.cfgFromStdin, "stdin", "i", false, "read config from STDIN") - rootCmd.Flags().StringVarP(&cfg.profileMode, "profile", "p", "none", "enable profiling with pprof. Mode: none or one of: [cpu, mem, mutex, block, trace, http]") - rootCmd.Flags().StringVarP(&cfg.port, "port", "", "6060", "port for http-mode of pprof") - rootCmd.Flags().StringVarP(&cfg.startDelay, "delay", "", "0ns", "delay before visor start") - - cfg.restartCtx = restart.CaptureContext() + delayDuration, err := time.ParseDuration(delay) + if err != nil { + log.WithError(err).Error("Failed to parse delay duration.") + delayDuration = time.Duration(0) + } + + log.WithField("delay", delayDuration). + WithField("systemd", restartCtx.Systemd()). + WithField("parent_systemd", restartCtx.ParentSystemd()). + Debugf("Process info") + + // Versions v0.2.3 and below return 0 exit-code after update and do not trigger systemd to restart a process + // and therefore do not support restart via systemd. + // If --delay flag is passed, version is v0.2.3 or below. + // Systemd has PID 1. If PPID is not 1 and PPID of parent process is 1, then + // this process is a child process that is run after updating by a skywire-visor that is run by systemd. + if delayDuration != 0 && !restartCtx.Systemd() && restartCtx.ParentSystemd() { + // As skywire-visor checks if new process is run successfully in `restart.DefaultCheckDelay` after update, + // new process should be alive after `restart.DefaultCheckDelay`. + time.Sleep(restart.DefaultCheckDelay) + + // When a parent process exits, systemd kills child processes as well, + // so a child process can ask systemd to restart service between after restart.DefaultCheckDelay + // but before (restart.DefaultCheckDelay + restart.extraWaitingTime), + // because after that time a parent process would exit and then systemd would kill its children. + // In this case, systemd would kill both parent and child processes, + // then restart service using an updated binary. + cmd := exec.Command("systemctl", "restart", "skywire-visor") // nolint:gosec + if err := cmd.Run(); err != nil { + log.WithError(err).Errorf("Failed to restart skywire-visor service") + } else { + log.WithError(err).Infof("Restarted skywire-visor service") + } + + // Detach child from parent. + if _, err := syscall.Setsid(); err != nil { + log.WithError(err).Errorf("Failed to call setsid()") + } + } + + time.Sleep(delayDuration) + + if _, err := buildinfo.Get().WriteTo(log.Out); err != nil { + log.WithError(err).Error("Failed to output build info.") + } + + stopPProf := initPProf(log, tag, pprofMode, pprofAddr) + defer stopPProf() + + conf := initConfig(log, args, confPath) + + v, ok := visor.NewVisor(conf, restartCtx) + if !ok { + log.Fatal("Failed to start visor.") + } + v.SetLogstore(store) + + if launchBrowser { + runBrowser(conf, log) + } + + ctx, cancel := cmdutil.SignalContext(context.Background(), log) + defer cancel() + + // Wait. + <-ctx.Done() + + if err := v.Close(); err != nil { + log.WithError(err).Error("Visor closed with error.") + } + }, + Version: buildinfo.Version(), } // Execute executes root CLI command. -func Execute() { +func Execute(ui embed.FS) { + uiFS, err := fs.Sub(ui, "static") + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + uiAssets = uiFS + if err := rootCmd.Execute(); err != nil { - log.Fatal(err) + fmt.Println(err) + } +} + +func initLogger(tag string, syslogAddr string) *logging.MasterLogger { + log := logging.NewMasterLogger() + + if syslogAddr != "" { + hook, err := syslog.SetupHook(syslogAddr, tag) + if err != nil { + log.WithError(err).Error("Failed to connect to the syslog daemon.") + } else { + log.AddHook(hook) + log.Out = ioutil.Discard + } } + + return log } -func (cfg *runCfg) startProfiler() *runCfg { - var option func(*profile.Profile) - switch cfg.profileMode { - case "none": - cfg.profileStop = func() {} - return cfg +func initPProf(log *logging.MasterLogger, tag string, profMode string, profAddr string) (stop func()) { + var optFunc func(*profile.Profile) + + switch profMode { + case "none", "": case "http": go func() { - log.Println(http.ListenAndServe(fmt.Sprintf("localhost:%v", cfg.port), nil)) + err := http.ListenAndServe(profAddr, nil) + log.WithError(err). + WithField("mode", profMode). + WithField("addr", profAddr). + Info("Stopped serving pprof on http.") }() - cfg.profileStop = func() {} - return cfg case "cpu": - option = profile.CPUProfile + optFunc = profile.CPUProfile case "mem": - option = profile.MemProfile + optFunc = profile.MemProfile case "mutex": - option = profile.MutexProfile + optFunc = profile.MutexProfile case "block": - option = profile.BlockProfile + optFunc = profile.BlockProfile case "trace": - option = profile.TraceProfile + optFunc = profile.TraceProfile } - cfg.profileStop = profile.Start(profile.ProfilePath("./logs/"+cfg.tag), option).Stop - return cfg -} -func (cfg *runCfg) startLogger() *runCfg { - cfg.masterLogger = logging.NewMasterLogger() - cfg.logger = cfg.masterLogger.PackageLogger(cfg.tag) + if optFunc != nil { + stop = profile.Start(profile.ProfilePath("./logs/"+tag), optFunc).Stop + } - if cfg.syslogAddr != "none" { - hook, err := logrussyslog.NewSyslogHook("udp", cfg.syslogAddr, syslog.LOG_INFO, cfg.tag) - if err != nil { - cfg.logger.Error("Unable to connect to syslog daemon:", err) - } else { - cfg.masterLogger.AddHook(hook) - cfg.masterLogger.Out = ioutil.Discard - } + if stop == nil { + stop = func() {} } - return cfg + return stop } -func (cfg *runCfg) readConfig() *runCfg { - var rdr io.Reader - var err error - if !cfg.cfgFromStdin { - configPath := pathutil.FindConfigPath(cfg.args, 0, configEnv, pathutil.NodeDefaults()) - rdr, err = os.Open(filepath.Clean(configPath)) +func initConfig(mLog *logging.MasterLogger, args []string, confPath string) *visorconfig.V1 { + log := mLog.PackageLogger("visor:config") + + var r io.Reader + + switch confPath { + case visorconfig.StdinName: + log.Info("Reading config from STDIN.") + r = os.Stdin + case "": + // TODO: More robust solution. + for _, arg := range args { + if strings.HasSuffix(arg, ".json") { + confPath = arg + break + } + } + + if confPath == "" { + confPath = "/opt/skywire/" + defaultConfigName + } + + fallthrough + default: + log.WithField("filepath", confPath).Info("Reading config from file.") + f, err := os.Open(confPath) //nolint:gosec if err != nil { - cfg.logger.Fatalf("Failed to open config: %s", err) + log.WithError(err). + WithField("filepath", confPath). + Fatal("Failed to read config file.") } - } else { - cfg.logger.Info("Reading config from STDIN") - rdr = bufio.NewReader(os.Stdin) + defer func() { + if err := f.Close(); err != nil { + log.WithError(err).Error("Closing config file resulted in error.") + } + }() + r = f } - cfg.conf = visor.Config{} - if err := json.NewDecoder(rdr).Decode(&cfg.conf); err != nil { - cfg.logger.Fatalf("Failed to decode %s: %s", rdr, err) + raw, err := ioutil.ReadAll(r) + if err != nil { + log.WithError(err).Fatal("Failed to read in config.") } - fmt.Println("TCP Factory conf:", cfg.conf.STCP) - return cfg -} -func (cfg *runCfg) runNode() *runCfg { - startDelay, err := time.ParseDuration(cfg.startDelay) + conf, err := visorconfig.Parse(mLog, confPath, raw) if err != nil { - cfg.logger.Warnf("Using no visor start delay due to parsing failure: %v", err) - startDelay = time.Duration(0) + log.WithError(err).Fatal("Failed to parse config.") } - if startDelay != 0 { - cfg.logger.Infof("Visor start delay is %v, waiting...", startDelay) + if conf.Hypervisor != nil { + conf.Hypervisor.UIAssets = uiAssets } - time.Sleep(startDelay) + return conf +} - node, err := visor.NewNode(&cfg.conf, cfg.masterLogger, cfg.restartCtx) - if err != nil { - cfg.logger.Fatal("Failed to initialize node: ", err) +func runBrowser(conf *visorconfig.V1, log *logging.MasterLogger) { + if conf.Hypervisor == nil { + log.Errorln("Cannot start browser with a regular visor") + return } - - if cfg.conf.DmsgPty != nil { - err = node.UnlinkSocketFiles(cfg.conf.AppServerSockFile, cfg.conf.DmsgPty.CLIAddr) - } else { - err = node.UnlinkSocketFiles(cfg.conf.AppServerSockFile) + addr := conf.Hypervisor.HTTPAddr + if addr[0] == ':' { + addr = "localhost" + addr } - - if err != nil { - cfg.logger.Fatal("failed to unlink socket files: ", err) - } - - if cfg.conf.Uptime.Tracker != "" { - uptimeTracker, err := utclient.NewHTTP(cfg.conf.Uptime.Tracker, cfg.conf.Node.StaticPubKey, cfg.conf.Node.StaticSecKey) - if err != nil { - cfg.logger.Error("Failed to connect to uptime tracker: ", err) + if addr[:4] != "http" { + if conf.Hypervisor.EnableTLS { + addr = "https://" + addr } else { - ticker := time.NewTicker(1 * time.Second) - - go func() { - for range ticker.C { - ctx := context.Background() - if err := uptimeTracker.UpdateNodeUptime(ctx); err != nil { - cfg.logger.Error("Failed to update node uptime: ", err) - } - } - }() + addr = "http://" + addr } } - go func() { - if err := node.Start(); err != nil { - cfg.logger.Fatal("Failed to start node: ", err) + if !checkHvIsRunning(addr, 5) { + log.Error("Cannot open hypervisor in browser: status check failed") + return + } + if err := webbrowser.Open(addr); err != nil { + log.WithError(err).Error("webbrowser.Open failed") } }() - - if cfg.conf.ShutdownTimeout == 0 { - cfg.conf.ShutdownTimeout = defaultShutdownTimeout - } - - cfg.node = node - - return cfg } -func (cfg *runCfg) stopNode() *runCfg { - defer cfg.profileStop() - if err := cfg.node.Close(); err != nil { - if !strings.Contains(err.Error(), "closed") { - cfg.logger.Fatal("Failed to close node: ", err) +func checkHvIsRunning(addr string, retries int) bool { + url := addr + "/api/ping" + for i := 0; i < retries; i++ { + time.Sleep(500 * time.Millisecond) + resp, err := http.Get(url) // nolint: gosec + if err != nil { + continue } - } - return cfg -} - -func (cfg *runCfg) waitOsSignals() *runCfg { - ch := make(chan os.Signal, 2) - signal.Notify(ch, []os.Signal{syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT}...) - <-ch - go func() { - select { - case <-time.After(time.Duration(cfg.conf.ShutdownTimeout)): - cfg.logger.Fatal("Timeout reached: terminating") - case s := <-ch: - cfg.logger.Fatalf("Received signal %s: terminating", s) + err = resp.Body.Close() + if err != nil { + continue } - }() - return cfg + if resp.StatusCode < 400 { + return true + } + } + return false } diff --git a/cmd/skywire-visor/config.json b/cmd/skywire-visor/config.json deleted file mode 100644 index b293372a7e..0000000000 --- a/cmd/skywire-visor/config.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": "1.0", - "node": { - "static_public_key": "024ec47420176680816e0406250e7156465e4531f5b26057c9f6297bb0303558c7", - "static_secret_key": "42bca4df2f3189b28872d40e6c61aacd5e85b8e91f8fea65780af27c142419e5" - }, - "dmsg": { - "discovery": "http://skywire.skycoin.net:8001", - "server_count": 5 - }, - "apps": [ - { - "app": "skychat", - "version": "1.0", - "auto_start": true, - "ports": [ - 1 - ] - } - ], - "messaging_path": "./messaging", - "apps_path": "./apps", - "local_path": "./local", - "interfaces": { - "messaging": ":3434", - "http": ":80", - "https": false, - "rpc": ":3435" - } -} diff --git a/cmd/hypervisor/hypervisor.postman_collection.json b/cmd/skywire-visor/hypervisor.postman_collection.json similarity index 87% rename from cmd/hypervisor/hypervisor.postman_collection.json rename to cmd/skywire-visor/hypervisor.postman_collection.json index 665b29e9a4..85b963a625 100644 --- a/cmd/hypervisor/hypervisor.postman_collection.json +++ b/cmd/skywire-visor/hypervisor.postman_collection.json @@ -6,7 +6,7 @@ }, "item": [ { - "name": "/api/nodes", + "name": "/api/visors", "request": { "method": "GET", "header": [], @@ -15,22 +15,22 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes", + "raw": "http://localhost:8000/api/visors", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes" + "visors" ] }, - "description": "Provides a summary of all connected app nodes." + "description": "Provides a summary of all connected visors." }, "response": [ { - "name": "/api/nodes", + "name": "/api/visors", "originalRequest": { "method": "GET", "header": [], @@ -39,15 +39,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes", + "raw": "http://localhost:8000/api/visors", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes" + "visors" ] } }, @@ -74,7 +74,7 @@ ] }, { - "name": "/api/nodes/{pk}", + "name": "/api/visors/{pk}", "request": { "method": "GET", "header": [], @@ -83,15 +83,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02", + "raw": "http://localhost:8000/api/visors/021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02" ], "query": [ @@ -102,11 +102,11 @@ } ] }, - "description": "Provides a summary of a given connected app node of public key." + "description": "Provides a summary of a given connected visor of public key." }, "response": [ { - "name": "/api/nodes/:pk", + "name": "/api/visors/:pk", "originalRequest": { "method": "GET", "header": [], @@ -115,15 +115,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2", + "raw": "http://localhost:8000/api/visors/02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2" ], "query": [ @@ -158,7 +158,7 @@ ] }, { - "name": "/api/nodes/{pk}/apps", + "name": "/api/visors/{pk}/apps", "request": { "method": "GET", "header": [], @@ -167,24 +167,24 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02/apps", + "raw": "http://localhost:8000/api/visors/021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02/apps", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02", "apps" ] }, - "description": "Provides a summary of an AppNode's apps." + "description": "Provides a summary of an visors." }, "response": [ { - "name": "/api/nodes/:pk/apps", + "name": "/api/visors/:pk/apps", "originalRequest": { "method": "GET", "header": [], @@ -193,15 +193,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2/apps", + "raw": "http://localhost:8000/api/visors/02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2/apps", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2", "apps" ] @@ -230,7 +230,7 @@ ] }, { - "name": "/api/nodes/{pk}/apps/{app}", + "name": "/api/visors/{pk}/apps/{app}", "request": { "method": "GET", "header": [], @@ -239,25 +239,25 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02/apps/foo.v1.0", + "raw": "http://localhost:8000/api/visors/021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02/apps/foo.v1.0", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "021c535e45756c63151820c8f31bfbb0efd6d7d49305e133e1650aae889d60ff02", "apps", "foo.v1.0" ] }, - "description": "Starts an app on an AppNode." + "description": "Starts an app on an Visor." }, "response": [ { - "name": "/api/nodes/:pk/apps/:app/start", + "name": "/api/visors/:pk/apps/:app/start", "originalRequest": { "method": "POST", "header": [], @@ -266,15 +266,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2/apps/foo.v1.0/start", + "raw": "http://localhost:8000/api/visors/02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2/apps/foo.v1.0/start", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2", "apps", "foo.v1.0", @@ -300,12 +300,12 @@ } ], "cookie": [], - "body": "{\n \"node\": \"02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2\",\n \"app\": \"foo.v1.0\",\n \"command\": \"StartApp\",\n \"success\": true\n}" + "body": "{\n \"visor\": \"02500488fc25814e55e6c740537ed14ca677aebe8a883681bae718a36516a7b0a2\",\n \"app\": \"foo.v1.0\",\n \"command\": \"StartApp\",\n \"success\": true\n}" } ] }, { - "name": "/api/nodes/{pk}/apps/{app}", + "name": "/api/visors/{pk}/apps/{app}", "request": { "method": "PUT", "header": [ @@ -321,25 +321,25 @@ "raw": "{\n\t\"autostart\": true,\n\t\"status\": 1\n}" }, "url": { - "raw": "http://localhost:8080/api/nodes/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/apps/foo.v1.0", + "raw": "http://localhost:8000/api/visors/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/apps/foo.v1.0", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64", "apps", "foo.v1.0" ] }, - "description": "Starts an app on an AppNode." + "description": "Starts an app on a Visor." }, "response": [ { - "name": "/api/nodes/{pk}/apps/{app}", + "name": "/api/visors/{pk}/apps/{app}", "originalRequest": { "method": "PUT", "header": [ @@ -355,15 +355,15 @@ "raw": "{\n\t\"autostart\": true,\n\t\"status\": 1\n}" }, "url": { - "raw": "http://localhost:8080/api/nodes/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/apps/foo.v1.0", + "raw": "http://localhost:8000/api/visors/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/apps/foo.v1.0", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64", "apps", "foo.v1.0" @@ -393,7 +393,7 @@ ] }, { - "name": "/api/nodes/{pk}/transport-types", + "name": "/api/visors/{pk}/transport-types", "request": { "method": "GET", "header": [], @@ -402,24 +402,24 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transport-types", + "raw": "http://localhost:8000/api/visors/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transport-types", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64", "transport-types" ] }, - "description": "Lists supported transport types of the given AppNode." + "description": "Lists supported transport types of the given Visor." }, "response": [ { - "name": "/api/nodes/:pk/transport-types", + "name": "/api/visors/:pk/transport-types", "originalRequest": { "method": "GET", "header": [], @@ -428,15 +428,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transport-types", + "raw": "http://localhost:8000/api/visors/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transport-types", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2", "transport-types" ] @@ -465,7 +465,7 @@ ] }, { - "name": "/api/nodes/{pk}/transports", + "name": "/api/visors/{pk}/transports", "request": { "method": "GET", "header": [], @@ -474,15 +474,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports?logs=true", + "raw": "http://localhost:8000/api/visors/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports?logs=true", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64", "transports" ], @@ -494,11 +494,11 @@ } ] }, - "description": "List transports of given AppNode." + "description": "List transports of given Visor." }, "response": [ { - "name": "/api/nodes/:pk/transports", + "name": "/api/visors/:pk/transports", "originalRequest": { "method": "GET", "header": [], @@ -507,15 +507,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports?logs=true", + "raw": "http://localhost:8000/api/visors/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports?logs=true", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2", "transports" ], @@ -551,7 +551,7 @@ ] }, { - "name": "/api/nodes/{pk}/transports", + "name": "/api/visors/{pk}/transports", "request": { "method": "POST", "header": [ @@ -567,24 +567,24 @@ "raw": "{\n\t\"remote_pk\": \"03c497380efd87e19208bb484ee322ede1e091b2a0b653e6d25475f641602376a9\",\n\t\"transport_type\": \"native\",\n\t\"public\": true\n}" }, "url": { - "raw": "http://localhost:8080/api/nodes/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports", + "raw": "http://localhost:8000/api/visors/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64", "transports" ] }, - "description": "Adds a transport to a given AppNode." + "description": "Adds a transport to a given Visor." }, "response": [ { - "name": "POST /api/nodes/transports", + "name": "POST /api/visors/transports", "originalRequest": { "method": "POST", "header": [ @@ -600,15 +600,15 @@ "raw": "{\n\t\"remote_pk\": \"03c497380efd87e19208bb484ee322ede1e091b2a0b653e6d25475f641602376a9\",\n\t\"transport_type\": \"native\",\n\t\"public\": true\n}" }, "url": { - "raw": "http://localhost:8080/api/nodes/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports", + "raw": "http://localhost:8000/api/visors/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2", "transports" ] @@ -637,7 +637,7 @@ ] }, { - "name": "/api/nodes/{pk}/transports/{tid}", + "name": "/api/visors/{pk}/transports/{tid}", "request": { "method": "GET", "header": [], @@ -646,25 +646,25 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports/70836b44-f6e5-4c17-a5e8-e1cbef89a10f", + "raw": "http://localhost:8000/api/visors/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports/70836b44-f6e5-4c17-a5e8-e1cbef89a10f", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64", "transports", "70836b44-f6e5-4c17-a5e8-e1cbef89a10f" ] }, - "description": "Obtains summary of transport of given TransportID and AppNode." + "description": "Obtains summary of transport of given TransportID and Visor." }, "response": [ { - "name": "/api/nodes/:pk/transports/:tid", + "name": "/api/visors/:pk/transports/:tid", "originalRequest": { "method": "GET", "header": [], @@ -673,15 +673,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports/2ff2d608-fe14-4c17-938c-3af8afd053ae", + "raw": "http://localhost:8000/api/visors/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports/2ff2d608-fe14-4c17-938c-3af8afd053ae", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2", "transports", "2ff2d608-fe14-4c17-938c-3af8afd053ae" @@ -711,7 +711,7 @@ ] }, { - "name": "DELETE /api/nodes/{pk}/transports/{tid}", + "name": "DELETE /api/visors/{pk}/transports/{tid}", "request": { "method": "DELETE", "header": [], @@ -720,25 +720,25 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports/d5ace20e-06c8-4867-bda2-9449459a9e5a", + "raw": "http://localhost:8000/api/visors/023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64/transports/d5ace20e-06c8-4867-bda2-9449459a9e5a", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "023ab9f45c0eb3625f9848a9ff6822c6d0965a94d3e7955f1869f38153df0e5b64", "transports", "d5ace20e-06c8-4867-bda2-9449459a9e5a" ] }, - "description": "Removes transport of given TransportID and AppNode." + "description": "Removes transport of given TransportID and Visor." }, "response": [ { - "name": "DELETE /api/nodes/:pk/transports/:tid", + "name": "DELETE /api/visors/:pk/transports/:tid", "originalRequest": { "method": "DELETE", "header": [], @@ -747,15 +747,15 @@ "raw": "" }, "url": { - "raw": "http://localhost:8080/api/nodes/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports/2ff2d608-fe14-4c17-938c-3af8afd053ae", + "raw": "http://localhost:8000/api/visors/039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2/transports/2ff2d608-fe14-4c17-938c-3af8afd053ae", "protocol": "http", "host": [ "localhost" ], - "port": "8080", + "port": "8000", "path": [ "api", - "nodes", + "visors", "039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2", "transports", "2ff2d608-fe14-4c17-938c-3af8afd053ae" @@ -780,7 +780,7 @@ } ], "cookie": [], - "body": "{\n \"node\": \"039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2\",\n \"transport\": \"2ff2d608-fe14-4c17-938c-3af8afd053ae\",\n \"command\": \"RemoveTransport\",\n \"success\": true\n}" + "body": "{\n \"visor\": \"039337a306ffbd6a7495f79b65aec91ce65756e4fd1cb2cd726840b2eee4fa59c2\",\n \"transport\": \"2ff2d608-fe14-4c17-938c-3af8afd053ae\",\n \"command\": \"RemoveTransport\",\n \"success\": true\n}" } ] } diff --git a/cmd/skywire-visor/skywire-visor.go b/cmd/skywire-visor/skywire-visor.go index 282da4c41f..8422dfa7db 100644 --- a/cmd/skywire-visor/skywire-visor.go +++ b/cmd/skywire-visor/skywire-visor.go @@ -4,9 +4,14 @@ skywire visor package main import ( - "github.com/SkycoinProject/skywire-mainnet/cmd/skywire-visor/commands" + "embed" + + "github.com/skycoin/skywire/cmd/skywire-visor/commands" ) +//go:embed static +var uiAssets embed.FS + func main() { - commands.Execute() + commands.Execute(uiAssets) } diff --git a/cmd/skywire-visor/static/3rdpartylicenses.txt b/cmd/skywire-visor/static/3rdpartylicenses.txt new file mode 100644 index 0000000000..20a1082aff --- /dev/null +++ b/cmd/skywire-visor/static/3rdpartylicenses.txt @@ -0,0 +1,598 @@ +@angular-devkit/build-angular +MIT +The MIT License + +Copyright (c) 2017 Google, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +@angular/animations +MIT + +@angular/cdk +MIT +The MIT License + +Copyright (c) 2020 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/common +MIT + +@angular/core +MIT + +@angular/forms +MIT + +@angular/material +MIT +The MIT License + +Copyright (c) 2020 Google LLC. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +@angular/platform-browser +MIT + +@angular/router +MIT + +@babel/runtime +MIT +MIT License + +Copyright (c) 2014-present Sebastian McKenzie and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +@ngx-translate/core +MIT + +bignumber.js +MIT +The MIT Licence. + +Copyright (c) 2018 Michael Mclaughlin + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +chart.js +MIT +The MIT License (MIT) + +Copyright (c) 2018 Chart.js Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +chartjs-color +MIT +Copyright (c) 2012 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +chartjs-color-string +MIT +Copyright (c) 2011 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +color-convert +Copyright (c) 2011 Heather Arthur + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + + +color-name +MIT +The MIT License (MIT) +Copyright (c) 2015 Dmitry Ivanov + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +core-js +MIT +Copyright (c) 2014-2018 Denis Pushkarev + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +css-loader +MIT +Copyright JS Foundation and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +moment +MIT +Copyright (c) JS Foundation and other contributors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + + +regenerator-runtime +MIT +MIT License + +Copyright (c) 2014-present, Facebook, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +rxjs +Apache-2.0 + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (c) 2015-2018 Google, Inc., Netflix, Inc., Microsoft Corp. and contributors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +webpack +MIT +Copyright JS Foundation and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +zone.js +MIT +The MIT License + +Copyright (c) 2010-2020 Google LLC. http://angular.io/license + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/cmd/skywire-visor/static/5.c827112cf0298fe67479.js b/cmd/skywire-visor/static/5.c827112cf0298fe67479.js new file mode 100644 index 0000000000..44ee210b58 --- /dev/null +++ b/cmd/skywire-visor/static/5.c827112cf0298fe67479.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[5],{"K+GZ":function(e){e.exports=JSON.parse('{"common":{"save":"Speichern","edit":"\xc4ndern","cancel":"Abbrechen","node-key":"Visor Schl\xfcssel","app-key":"Anwendungs-Schl\xfcssel","discovery":"Discovery","downloaded":"Heruntergeladen","uploaded":"Hochgeladen","delete":"L\xf6schen","none":"Nichts","loading-error":"Beim Laden der Daten ist ein Fehler aufgetreten. Versuche es erneut...","operation-error":"Beim Ausf\xfchren der Aktion ist ein Fehler aufgetreten.","no-connection-error":"Es ist keine Internetverbindung oder Verbindung zum Hypervisor vorhanden.","error":"Fehler:","refreshed":"Daten aktualisiert.","options":"Optionen","logout":"Abmelden","logout-error":"Fehler beim Abmelden."},"tables":{"title":"Ordnen nach","sorting-title":"Geordnet nach:","ascending-order":"(aufsteigend)","descending-order":"(absteigend)"},"inputs":{"errors":{"key-required":"Schl\xfcssel wird ben\xf6tigt.","key-length":"Schl\xfcssel muss 66 Zeichen lang sein."}},"start":{"title":"Start"},"node":{"title":"Visor Details","not-found":"Visor nicht gefunden.","statuses":{"online":"Online","online-tooltip":"Visor ist online","offline":"Offline","offline-tooltip":"Visor ist offline"},"details":{"node-info":{"title":"Visor Info","label":"Bezeichnung:","public-key":"\xd6ffentlicher Schl\xfcssel:","port":"Port:","node-version":"Visor Version:","app-protocol-version":"Anwendungsprotokollversion:","time":{"title":"Online seit:","seconds":"ein paar Sekunden","minute":"1 Minute","minutes":"{{ time }} Minuten","hour":"1 Stunde","hours":"{{ time }} Stunden","day":"1 Tag","days":"{{ time }} Tage","week":"1 Woche","weeks":"{{ time }} Wochen"}},"node-health":{"title":"Zustand Info","status":"Status:","transport-discovery":"Transport Entdeckung:","route-finder":"Route Finder:","setup-node":"Setup Visor:","uptime-tracker":"Verf\xfcgbarkeitsmonitor:","address-resolver":"Addressaufl\xf6ser:","element-offline":"offline"},"node-traffic-data":"Datenverkehr"},"tabs":{"info":"Info","apps":"Anwendungen","routing":"Routing"},"error-load":"Beim Aktualisieren der Visordaten ist ein Fehler aufgetreten."},"nodes":{"title":"Visor Liste","state":"Status","label":"Bezeichnung","key":"Schl\xfcssel","view-node":"Visor betrachten","delete-node":"Visor l\xf6schen","error-load":"Beim Aktualisieren der Visor-Liste ist ein Fehler aufgetreten.","empty":"Es ist kein Visor zu diesem Hypervisor verbunden.","delete-node-confirmation":"Visor wirklich von der Liste l\xf6schen?","deleted":"Visor gel\xf6scht."},"edit-label":{"title":"Bezeichnung \xe4ndern","label":"Bezeichnung","done":"Bezeichnung gespeichert.","default-label-warning":"Die Standardbezeichnung wurde verwendet."},"settings":{"title":"Einstellungen","password":{"initial-config-help":"Diese Option wird verwendet, um das erste Passwort festzulegen. Nachdem ein Passwort festgelegt wurde, ist es nicht m\xf6glich dieses, mit dieser Option zu \xe4ndern.","help":"Optionen um das Passwort zu \xe4ndern.","old-password":"Altes Passwort","new-password":"Neues Passwort","repeat-password":"Neues Passwort wiederholen","password-changed":"Passwort wurde ge\xe4ndert.","error-changing":"Fehler beim \xc4ndern des Passworts aufgetreten.","initial-config":{"title":"Erstes Passwort festlegen","password":"Passwort","repeat-password":"Passwort wiederholen","set-password":"Passwort \xe4ndern","done":"Passwort wurde ge\xe4ndert.","error":"Fehler. Es scheint ein erstes Passwort wurde schon gew\xe4hlt."},"errors":{"bad-old-password":"Altes Passwort falsch","old-password-required":"Altes Passwort wird ben\xf6tigt","new-password-error":"Passwort muss 6-64 Zeichen lang sein.","passwords-not-match":"Passw\xf6rter stimmen nicht \xfcberein.","default-password":"Das Standardpasswort darf nicht verwendet werden (1234)."}},"change-password":"Passwort \xe4ndern","refresh-rate":"Aktualisierungsintervall","refresh-rate-help":"Zeit, bis das System die Daten automatisch aktualisiert.","refresh-rate-confirmation":"Aktualisierungsintervall ge\xe4ndert.","seconds":"Sekunden"},"login":{"password":"Passwort","incorrect-password":"Falsches Passwort.","initial-config":"Erste Konfiguration"},"actions":{"menu":{"terminal":"Terminal","config":"Konfiguration","update":"Aktualisieren","reboot":"Neustart"},"reboot":{"confirmation":"Den Visor wirklich neustarten?","done":"Der Visor wird neu gestartet."},"config":{"title":"Discovery Konfiguration","header":"Discovery Addresse","remove":"Addresse entfernen","add":"Addresse hinzuf\xfcgen","cant-store":"Konfiguration kann nicht gespeichert werden.","success":"Discovery Konfiguration wird durch Neustart angewendet."},"terminal-options":{"full":"Terminal","simple":"Einfaches Terminal"},"terminal":{"title":"Terminal","input-start":"Skywire Terminal f\xfcr {{address}}","error":"Bei der Ausf\xfchrung des Befehls ist ein Fehler aufgetreten."},"update":{"title":"Update","processing":"Suche nach Updates...","processing-button":"Bitte warten","no-update":"Kein Update vorhanden.
      Installierte Version: {{ version }}.","update-available":"Es ist ein Update m\xf6glich.
      Installierte Version: {{ currentVersion }}
      Neue Version: {{ newVersion }}.","done":"Ein Update f\xfcr den Visor wird installiert.","update-error":"Update konnte nicht installiert werden.","install":"Update installieren"}},"apps":{"socksc":{"title":"Mit Visor verbinden","connect-keypair":"Schl\xfcsselpaar eingeben","connect-search":"Visor suchen","connect-history":"Verlauf","versions":"Versionen","location":"Standort","connect":"Verbinden","next-page":"N\xe4chste Seite","prev-page":"Vorherige Seite","auto-startup":"Automatisch mit Visor verbinden"},"sshc":{"title":"SSH Client","connect":"Verbinde mit SSH Server","auto-startup":"Starte SSH client automatisch","connect-keypair":"Schl\xfcsselpaar eingeben","connect-history":"Verlauf"},"sshs":{"title":"SSH-Server","whitelist":{"title":"SSH-Server Whitelist","header":"Schl\xfcssel","add":"Zu Liste hinzuf\xfcgen","remove":"Schl\xfcssel entfernen","enter-key":"Node Schl\xfcssel eingeben","errors":{"cant-save":"\xc4nderungen an der Whitelist konnten nicht gespeichert werden."},"saved-correctly":"\xc4nderungen an der Whitelist gespeichert"},"auto-startup":"Starte SSH-Server automatisch"},"log":{"title":"Log","empty":"Im ausgew\xe4hlten Intervall sind keine Logs vorhanden","filter-button":"Log-Intervall:","filter":{"title":"Filter","filter":"Zeige generierte Logs","7-days":"der letzten 7 Tagen","1-month":"der letzten 30 Tagen","3-months":"der letzten 3 Monaten","6-months":"der letzten 6 Monaten","1-year":"des letzten Jahres","all":"Zeige alle"}},"config":{"title":"Startup Konfiguration"},"menu":{"startup-config":"Startup Konfiguration","log":"Log Nachrichten","whitelist":"Whitelist"},"apps-list":{"title":"Anwendungen","list-title":"Anwendungsliste","app-name":"Name","port":"Port","status":"Status","auto-start":"Auto-Start","empty":"Visor hat keine Anwendungen.","disable-autostart":"Autostart ausschalten","enable-autostart":"Autostart einschalten","autostart-disabled":"Autostart aus","autostart-enabled":"Autostart ein"},"skysocks-settings":{"title":"Skysocks Einstellungen","new-password":"Neues Passwort (Um Passwort zu entfernen leer lassen)","repeat-password":"Passwort wiederholen","passwords-not-match":"Passw\xf6rter stimmen nicht \xfcberein.","save":"Speichern","remove-passowrd-confirmation":"Kein Passwort eingegeben. Wirklich Passwort entfernen?","change-passowrd-confirmation":"Passwort wirklich \xe4ndern?","changes-made":"\xc4nderungen wurden gespeichert."},"skysocks-client-settings":{"title":"Skysocks-Client Einstellungen","remote-visor-tab":"Remote Visor","history-tab":"Verlauf","public-key":"Remote Visor \xf6ffentlicher Schl\xfcssel","remote-key-length-error":"Der \xf6ffentliche Schl\xfcssel muss 66 Zeichen lang sein.","remote-key-chars-error":"Der \xf6ffentliche Schl\xfcssel darf nur hexadezimale Zeichen enthalten.","save":"Speichern","change-key-confirmation":"Wirklich den \xf6ffentlichen Schl\xfcssel des Remote Visors \xe4ndern?","changes-made":"\xc4nderungen wurden gespeichert.","no-history":"Dieser Tab zeigt die letzten {{ number }} \xf6ffentlichen Schl\xfcssel, die benutzt wurden."},"stop-app":"Stopp","start-app":"Start","view-logs":"Zeige Logs","settings":"Einstellungen","error":"Ein Fehler ist aufgetreten.","stop-confirmation":"Anwendung wirklich anhalten?","stop-selected-confirmation":"Ausgew\xe4hlte Anwendung wirklich anhalten?","disable-autostart-confirmation":"Auto-Start f\xfcr diese Anwendung wirklich ausschalten?","enable-autostart-confirmation":"Auto-Start f\xfcr diese Anwendung wirklich einschalten?","disable-autostart-selected-confirmation":"Auto-Start f\xfcr ausgew\xe4hlte Anwendungen wirklich ausschalten?","enable-autostart-selected-confirmation":"Auto-Start f\xfcr ausgew\xe4hlte Anwendungen wirklich einschalten","operation-completed":"Operation ausgef\xfchrt","operation-unnecessary":"Gew\xfcnschte Einstellungen schon aktiv.","status-running":"L\xe4uft","status-stopped":"Gestoppt","status-failed":"Fehler","status-running-tooltip":"Anwendung l\xe4uft","status-stopped-tooltip":"Anwendung gestoppt","status-failed-tooltip":"Ein Fehler ist aufgetreten. Log der Anwendung \xfcberpr\xfcfen."},"transports":{"title":"Transporte","list-title":"Transport-Liste","id":"ID","remote-node":"Remote","type":"Typ","create":"Transport erstellen","delete-confirmation":"Transport wirklich entfernen?","delete-selected-confirmation":"Ausgew\xe4hlte Transporte wirklich entfernen?","delete":"Transport entfernen","deleted":"Transport erfolgreich entfernt.","empty":"Visor hat keine Transporte.","details":{"title":"Details","basic":{"title":"Basis Info","id":"ID:","local-pk":"Lokaler \xf6ffentlicher Schl\xfcssel:","remote-pk":"Remote \xf6ffentlicher Schl\xfcssel:","type":"Typ:"},"data":{"title":"Daten\xfcbertragung","uploaded":"Hochgeladen:","downloaded":"Heruntergeladen:"}},"dialog":{"remote-key":"Remote \xf6ffentlicher Schl\xfcssel:","transport-type":"Transport-Typ","success":"Transport erstellt.","errors":{"remote-key-length-error":"Der remote \xf6ffentliche Schl\xfcssel muss 66 Zeichen lang sein.","remote-key-chars-error":"Der remote \xf6ffentliche Schl\xfcssel darf nur hexadezimale Zeichen enthalten.","transport-type-error":"Ein Transport-Typ wird ben\xf6tigt."}}},"routes":{"title":"Routen","list-title":"Routen-Liste","key":"Schl\xfcssel","rule":"Regel","delete-confirmation":"Diese Route wirklich entfernen?","delete-selected-confirmation":"Ausgew\xe4hlte Routen wirklich entfernen?","delete":"Route entfernen","deleted":"Route erfolgreich entfernt.","empty":"Visor hat keine Routen.","details":{"title":"Details","basic":{"title":"Basis Info","key":"Schl\xfcssel:","rule":"Regel:"},"summary":{"title":"Regel Zusammenfassung","keep-alive":"Keep alive:","type":"Typ:","key-route-id":"Schl\xfcssel-Route ID:"},"specific-fields-titles":{"app":"Anwendung","forward":"Weiterleitung","intermediary-forward":"Vermittelte Weiterleitung"},"specific-fields":{"route-id":"N\xe4chste Routen ID:","transport-id":"N\xe4chste Transport ID:","destination-pk":"Ziel \xf6ffentlicher Schl\xfcssel:","source-pk":"Quelle \xf6ffentlicher Schl\xfcssel:","destination-port":"Ziel Port:","source-port":"Quelle Port:"}}},"copy":{"tooltip":"In Zwischenablage kopieren","tooltip-with-text":"{{ text }} (In Zwischenablage kopieren)","copied":"In Zwischenablage kopiert!"},"selection":{"select-all":"Alle ausw\xe4hlen","unselect-all":"Alle abw\xe4hlen","delete-all":"Alle ausgew\xe4hlten Elemente entfernen","start-all":"Starte ausgew\xe4hlte Anwendung","stop-all":"Stoppe ausgew\xe4hlte Anwendung","enable-autostart-all":"Auto-Start f\xfcr ausgew\xe4hlte Anwendungen einschalten","disable-autostart-all":"Auto-Start f\xfcr ausgew\xe4hlte Anwendungen ausschalten"},"refresh-button":{"seconds":"K\xfcrzlich aktualisiert","minute":"Vor einer Minute aktualisiert","minutes":"Vor {{ time }} Minuten aktualisiert","hour":"Vor einer Stunde aktualisiert","hours":"Vor {{ time }} Stunden aktualisert","day":"Vor einem Tag aktualisiert","days":"Vor {{ time }} Tagen aktualisert","week":"Vor einer Woche aktualisiert","weeks":"Vor {{ time }} Wochen aktualisert","error-tooltip":"Fehler beim Aktualiseren aufgetreten. Versuche erneut alle {{ time }} Sekunden..."},"view-all-link":{"label":"Zeige alle {{ number }} Elemente"},"paginator":{"first":"Erste","last":"Letzte","total":"Insgesamt: {{ number }} Seiten","select-page-title":"Seite ausw\xe4hlen"},"confirmation":{"header-text":"Best\xe4tigung","confirm-button":"Ja","cancel-button":"Nein","close":"Schlie\xdfen","error-header-text":"Fehler"},"language":{"title":"Sprache ausw\xe4hlen"},"tabs-window":{"title":"Tab wechseln"}}')}}]); \ No newline at end of file diff --git a/cmd/skywire-visor/static/6.ca7f5530547226bc4317.js b/cmd/skywire-visor/static/6.ca7f5530547226bc4317.js new file mode 100644 index 0000000000..07e048ddec --- /dev/null +++ b/cmd/skywire-visor/static/6.ca7f5530547226bc4317.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[6],{KPjT:function(e){e.exports=JSON.parse('{"common":{"save":"Save","edit":"Edit","cancel":"Cancel","node-key":"Node Key","app-key":"App Key","discovery":"Discovery","downloaded":"Downloaded","uploaded":"Uploaded","delete":"Delete","none":"None","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out."},"tables":{"title":"Order by","sorting-title":"Ordered by:","ascending-order":"(ascending)","descending-order":"(descending)"},"inputs":{"errors":{"key-required":"Key is required.","key-length":"Key must be 66 characters long."}},"start":{"title":"Start"},"node":{"title":"Visor details","not-found":"Visor not found.","statuses":{"online":"Online","online-tooltip":"Visor is online","offline":"Offline","offline-tooltip":"Visor is offline"},"details":{"node-info":{"title":"Visor Info","label":"Label:","public-key":"Public key:","port":"Port:","node-version":"Visor version:","app-protocol-version":"App protocol version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"node-health":{"title":"Health info","status":"Status:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","uptime-tracker":"Uptime tracker:","address-resolver":"Address resolver:","element-offline":"offline"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing"},"error-load":"An error occurred while refreshing the data. Retrying..."},"nodes":{"title":"Visor list","state":"State","label":"Label","key":"Key","view-node":"View visor","delete-node":"Remove visor","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","deleted":"Visor removed."},"edit-label":{"title":"Edit label","label":"Label","done":"Label saved.","default-label-warning":"The default label has been used."},"settings":{"title":"Settings","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","reboot":"Reboot"},"reboot":{"confirmation":"Are you sure you want to reboot the visor?","done":"The visor is restarting."},"config":{"title":"Discovery configuration","header":"Discovery address","remove":"Remove address","add":"Add address","cant-store":"Unable to store node configuration.","success":"Applying discovery configuration by restarting node process."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."},"update":{"title":"Update","processing":"Looking for updates...","processing-button":"Please wait","no-update":"Currently, there is no update for the visor. The currently installed version is {{ version }}.","update-available":"There is an update available for the visor. Click the \'Install update\' button to continue. The currently installed version is {{ currentVersion }} and the new version is {{ newVersion }}.","done":"The visor is updated.","update-error":"Could not install the update. Please, try again later.","install":"Install update"}},"apps":{"socksc":{"title":"Connect to Node","connect-keypair":"Enter keypair","connect-search":"Search node","connect-history":"History","versions":"Versions","location":"Location","connect":"Connect","next-page":"Next page","prev-page":"Previous page","auto-startup":"Automatically connect to Node"},"sshc":{"title":"SSH Client","connect":"Connect to SSH Server","auto-startup":"Automatically start SSH client","connect-keypair":"Enter keypair","connect-history":"History"},"sshs":{"title":"SSH Server","whitelist":{"title":"SSH Server Whitelist","header":"Key","add":"Add to list","remove":"Remove key","enter-key":"Enter node key","errors":{"cant-save":"Could not save whitelist changes."},"saved-correctly":"Whitelist changes saved successfully."},"auto-startup":"Automatically start SSH server"},"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"config":{"title":"Startup configuration"},"menu":{"startup-config":"Startup configuration","log":"Log messages","whitelist":"Whitelist"},"apps-list":{"title":"Applications","list-title":"Application list","app-name":"Name","port":"Port","status":"Status","auto-start":"Auto start","empty":"Visor doesn\'t have any applications.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled"},"skysocks-settings":{"title":"Skysocks Settings","new-password":"New password (Leave empty to remove the password)","repeat-password":"Repeat password","passwords-not-match":"Passwords do not match.","save":"Save","remove-passowrd-confirmation":"You left the password field empty. Are you sure you want to remove the password?","change-passowrd-confirmation":"Are you sure you want to change the password?","changes-made":"The changes have been made."},"skysocks-client-settings":{"title":"Skysocks-Client Settings","remote-visor-tab":"Remote Visor","history-tab":"History","public-key":"Remote visor public key","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used."},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-stopped":"Stopped","status-failed":"Failed","status-running-tooltip":"App is currently running","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"Something went wrong. Check the app\'s messages for more information"},"transports":{"title":"Transports","list-title":"Transport list","id":"ID","remote-node":"Remote","type":"Type","create":"Create transport","delete-confirmation":"Are you sure you want to delete the transport?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","details":{"title":"Details","basic":{"title":"Basic info","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","transport-type":"Transport type","success":"Transport created.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}}},"routes":{"title":"Routes","list-title":"Route list","key":"Key","rule":"Rule","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"}}')}}]); \ No newline at end of file diff --git a/cmd/skywire-visor/static/7.1c17a3e5e903dcd94774.js b/cmd/skywire-visor/static/7.1c17a3e5e903dcd94774.js new file mode 100644 index 0000000000..900dc5fa88 --- /dev/null +++ b/cmd/skywire-visor/static/7.1c17a3e5e903dcd94774.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{amrp:function(e){e.exports=JSON.parse('{"common":{"save":"Save","cancel":"Cancel","downloaded":"Downloaded","uploaded":"Uploaded","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out.","logout-confirmation":"Are you sure you want to log out?","time-in-ms":"{{ time }}ms","ok":"Ok","unknown":"Unknown","close":"Close"},"labeled-element":{"edit-label":"Edit label","remove-label":"Remove label","copy":"Copy","remove-label-confirmation":"Do you really want to remove the label?","unnamed-element":"Unnamed","unnamed-local-visor":"Local visor","local-element":"Local","tooltip":"Click to copy the entry or change the label","tooltip-with-text":"{{ text }} (Click to copy the entry or change the label)"},"labels":{"title":"Labels","info":"Labels you have entered to easily identify visors, transports and other elements, instead of having to read machine generated identifiers.","list-title":"Label list","label":"Label","id":"Element ID","type":"Type","delete-confirmation":"Are you sure you want to delete the label?","delete-selected-confirmation":"Are you sure you want to delete the selected labels?","delete":"Delete label","deleted":"Delete operation completed.","empty":"There aren\'t any saved labels.","empty-with-filter":"No label matches the selected filtering criteria.","filter-dialog":{"label":"The label must contain","id":"The id must contain","type":"The type must be","type-options":{"any":"Any","visor":"Visor","dmsg-server":"DMSG server","transport":"Transport"}}},"filters":{"filter-action":"Filter","press-to-remove":"(Press to remove the filters)","remove-confirmation":"Are you sure you want to remove the filters?"},"tables":{"title":"Order by","sorting-title":"Ordered by:","sort-by-value":"Value","sort-by-label":"Label","label":"(label)","inverted-order":"(inverted)"},"start":{"title":"Start"},"node":{"title":"Visor details","not-found":"Visor not found.","statuses":{"online":"Online","online-tooltip":"Visor is online.","partially-online":"Online with problems","partially-online-tooltip":"Visor is online but not all services are working. For more information, open the details page and check the \\"Health info\\" section.","offline":"Offline","offline-tooltip":"Visor is offline."},"details":{"node-info":{"title":"Visor Info","label":"Label:","public-key":"Public key:","port":"Port:","dmsg-server":"DMSG server:","ping":"Ping:","node-version":"Visor version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"node-health":{"title":"Health info","status":"Status:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","uptime-tracker":"Uptime tracker:","address-resolver":"Address resolver:","element-offline":"Offline"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing"},"error-load":"An error occurred while refreshing the data. Retrying..."},"nodes":{"title":"Visor list","dmsg-title":"DMSG","update-all":"Update all visors","hypervisor":"Hypervisor","state":"State","state-tooltip":"Current state","label":"Label","key":"Key","dmsg-server":"DMSG server","ping":"Ping","hypervisor-info":"This visor is the current Hypervisor.","copy-key":"Copy key","copy-dmsg":"Copy DMSG server key","copy-data":"Copy data","view-node":"View visor","delete-node":"Remove visor","delete-all-offline":"Remove all offline visors","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","empty-with-filter":"No visor matches the selected filtering criteria.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","delete-all-offline-confirmation":"Are you sure you want to remove all offline visors from the list?","delete-all-filtered-offline-confirmation":"All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?","deleted":"Visor removed.","deleted-singular":"1 offline visor removed.","deleted-plural":"{{ number }} offline visors removed.","no-visors-to-update":"There are no visors to update.","filter-dialog":{"online":"The visor must be","label":"The label must contain","key":"The public key must contain","dmsg":"The DMSG server key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"edit-label":{"label":"Label","done":"Label saved.","label-removed-warning":"The label was removed."},"settings":{"title":"Settings","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"updater-config":{"open-link":"Show updater settings","open-confirmation":"The updater settings are for experienced users only. Are you sure you want to continue?","help":"Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.","channel":"Channel","version":"Version","archive-url":"Archive URL","checksum-url":"Checksum URL","not-saved":"The changes have not been saved yet.","save":"Save changes","remove-settings":"Remove the settings","saved":"The custom settings have been saved.","removed":"The custom settings have been removed.","save-confirmation":"Are you sure you want to apply the custom settings?","remove-confirmation":"Are you sure you want to remove the custom settings?"},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","reboot":"Reboot"},"reboot":{"confirmation":"Are you sure you want to reboot the visor?","done":"The visor is restarting."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."}},"update":{"title":"Update","error-title":"Error","processing":"Looking for updates...","no-update":"There is no update for the visor. The currently installed version is:","no-updates":"No new updates were found.","already-updating":"Some visors are already being updated:","update-available":"The following updates were found:","update-available-singular":"The following updates for 1 visor were found:","update-available-plural":"The following updates for {{ number }} visors were found:","update-available-additional-singular":"The following additional updates for 1 visor were found:","update-available-additional-plural":"The following additional updates for {{ number }} visors were found:","update-instructions":"Click the \'Install updates\' button to continue.","updating":"The update operation has been started, you can open this window again for checking the progress:","version-change":"From {{ currentVersion }} to {{ newVersion }}","selected-channel":"Selected channel:","downloaded-file-name-prefix":"Downloading: ","speed-prefix":"Speed: ","time-downloading-prefix":"Time downloading: ","time-left-prefix":"Aprox. time left: ","starting":"Preparing to update","finished":"Status connection finished","install":"Install updates"},"apps":{"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"apps-list":{"title":"Applications","list-title":"Application list","app-name":"Name","port":"Port","state":"State","state-tooltip":"Current state","auto-start":"Auto start","empty":"Visor doesn\'t have any applications.","empty-with-filter":"No app matches the selected filtering criteria.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled","unavailable-logs-error":"Unable to show the logs while the app is not running.","filter-dialog":{"state":"The state must be","name":"The name must contain","port":"The port must contain","autostart":"The autostart must be","state-options":{"any":"Running or stopped","running":"Running","stopped":"Stopped"},"autostart-options":{"any":"Enabled or disabled","enabled":"Enabled","disabled":"Disabled"}}},"vpn-socks-server-settings":{"socks-title":"Skysocks Settings","vpn-title":"VPN-Server Settings","new-password":"New password (Leave empty to remove the password)","repeat-password":"Repeat password","passwords-not-match":"Passwords do not match.","secure-mode-check":"Use secure mode","secure-mode-info":"When active, the server doesn\'t allow client/server SSH and doesn\'t allow any traffic from VPN clients to the server local network.","save":"Save","remove-passowrd-confirmation":"You left the password field empty. Are you sure you want to remove the password?","change-passowrd-confirmation":"Are you sure you want to change the password?","changes-made":"The changes have been made."},"vpn-socks-client-settings":{"socks-title":"Skysocks-Client Settings","vpn-title":"VPN-Client Settings","discovery-tab":"Search","remote-visor-tab":"Enter manually","history-tab":"History","settings-tab":"Settings","use":"Use this data","change-note":"Change note","remove-entry":"Remove entry","note":"Note:","note-entered-manually":"Entered manually","note-obtained":"Obtained from the discovery service","key":"Key:","port":"Port:","location":"Location:","state-available":"Available","state-offline":"Offline","public-key":"Remote visor public key","password":"Password","password-history-warning":"Note: the password will not be saved in the history.","copy-pk-info":"Copy public key.","copied-pk-info":"The public key has been copied.","copy-pk-error":"There was a problem copying the public key.","no-elements":"Currently there are no elements to show. Please try again later.","no-elements-for-filters":"There are no elements that meet the filter criteria.","no-filter":"No filter has been selected","click-to-change":"Click to change","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","remove-from-history-confirmation":"Are you sure you want to remove the entry from the history?","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used.","default-note-warning":"The default note has been used.","pagination-info":"{{ currentElementsRange }} of {{ totalElements }}","killswitch-check":"Activate killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem).","settings-changed-alert":" The changes have not been saved yet.","save-settings":"Save settings","change-note-dialog":{"title":"Change Note","note":"Note"},"password-dialog":{"title":"Enter Password","password":"Password","info":"You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.","continue-button":"Continue"},"filter-dialog":{"title":"Filters","country":"The country must be","any-country":"Any","location":"The location must contain","pub-key":"The public key must contain","apply":"Apply"}},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-stopped":"Stopped","status-failed":"Failed","status-running-tooltip":"App is currently running","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"Something went wrong. Check the app\'s messages for more information"},"transports":{"title":"Transports","remove-all-offline":"Remove all offline transports","remove-all-offline-confirmation":"Are you sure you want to remove all offline transports?","remove-all-filtered-offline-confirmation":"All offline transports satisfying the current filtering criteria will be removed. Are you sure you want to continue?","info":"Connections you have with remote Skywire visors, to allow local Skywire apps to communicate with apps running on those remote visors.","list-title":"Transport list","state":"State","state-tooltip":"Current state","id":"ID","remote-node":"Remote","type":"Type","create":"Create transport","delete-confirmation":"Are you sure you want to delete the transport?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","empty-with-filter":"No transport matches the selected filtering criteria.","statuses":{"online":"Online","online-tooltip":"Transport is online","offline":"Offline","offline-tooltip":"Transport is offline"},"details":{"title":"Details","basic":{"title":"Basic info","state":"State:","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","label":"Identification name (optional)","transport-type":"Transport type","success":"Transport created.","success-without-label":"The transport was created, but it was not possible to save the label.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}},"filter-dialog":{"online":"The transport must be","id":"The id must contain","remote-node":"The remote key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"routes":{"title":"Routes","info":"Paths used to reach the remote visors to which transports have been established. Routes are automatically generated as needed.","list-title":"Route list","key":"Key","type":"Type","source":"Source","destination":"Destination","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","empty-with-filter":"No route matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}},"filter-dialog":{"key":"The key must contain","type":"The type must be","source":"The source must contain","destination":"The destination must contain","any-type-option":"Any"}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error","done-header-text":"Done"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"}}')}}]); \ No newline at end of file diff --git a/cmd/skywire-visor/static/8.bcc884fb2e3b89427677.js b/cmd/skywire-visor/static/8.bcc884fb2e3b89427677.js new file mode 100644 index 0000000000..28370366a5 --- /dev/null +++ b/cmd/skywire-visor/static/8.bcc884fb2e3b89427677.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[8],{"ZF/7":function(e){e.exports=JSON.parse('{"common":{"save":"Guardar","cancel":"Cancelar","downloaded":"Recibido","uploaded":"Enviado","loading-error":"Hubo un error obteniendo los datos. Reintentando...","operation-error":"Hubo un error al intentar completar la operaci\xf3n.","no-connection-error":"No hay conexi\xf3n a Internet o conexi\xf3n con el hipervisor.","error":"Error:","refreshed":"Datos refrescados.","options":"Opciones","logout":"Cerrar sesi\xf3n","logout-error":"Error cerrando la sesi\xf3n.","time-in-ms":"{{ time }}ms","ok":"Ok","unknown":"Desconocido","close":"Cerrar"},"labeled-element":{"edit-label":"Editar etiqueta","remove-label":"Remover etiqueta","copy":"Copiar","remove-label-confirmation":"\xbfRealmente desea eliminar la etiqueta?","unnamed-element":"Sin nombre","unnamed-local-visor":"Visor local","local-element":"Local","tooltip":"Haga clic para copiar la entrada o cambiar la etiqueta","tooltip-with-text":"{{ text }} (Haga clic para copiar la entrada o cambiar la etiqueta)"},"labels":{"title":"Etiquetas","list-title":"Lista de etiquetas","label":"Etiqueta","id":"ID del elemento","type":"Tipo","delete-confirmation":"\xbfSeguro que desea borrar la etiqueta?","delete-selected-confirmation":"\xbfSeguro que desea borrar las etiquetas seleccionados?","delete":"Borrar etiqueta","deleted":"Operaci\xf3n de borrado completada.","empty":"No hay etiquetas guardadas.","empty-with-filter":"Ninguna etiqueta coincide con los criterios de filtrado seleccionados.","filter-dialog":{"label":"La etiqueta debe contener","id":"El id debe contener","type":"El tipo debe ser","type-options":{"any":"Cualquiera","visor":"Visor","dmsg-server":"Servidor DMSG","transport":"Transporte"}}},"filters":{"filter-action":"Filtrar","active-filters":"Filtros activos: ","press-to-remove":"(Presione para remover)","remove-confirmation":"\xbfSeguro que desea remover los filtros?"},"tables":{"title":"Ordenar por","sorting-title":"Ordenado por:","ascending-order":"(ascendente)","descending-order":"(descendente)"},"start":{"title":"Inicio"},"node":{"title":"Detalles del visor","not-found":"Visor no encontrado.","statuses":{"online":"Online","online-tooltip":"El visor se encuentra online.","partially-online":"Online con problemas","partially-online-tooltip":"El visor se encuentra online pero no todos los servicios est\xe1n funcionando. Para m\xe1s informaci\xf3n, abra la p\xe1gina de detalles y consulte la secci\xf3n \\"Informaci\xf3n de salud\\".","offline":"Offline","offline-tooltip":"El visor se encuentra offline."},"details":{"node-info":{"title":"Informaci\xf3n del visor","label":"Etiqueta:","public-key":"Llave p\xfablica:","port":"Puerto:","dmsg-server":"Servidor DMSG:","ping":"Ping:","node-version":"Versi\xf3n del visor:","time":{"title":"Tiempo online:","seconds":"unos segundos","minute":"1 minuto","minutes":"{{ time }} minutos","hour":"1 hora","hours":"{{ time }} horas","day":"1 d\xeda","days":"{{ time }} d\xedas","week":"1 semana","weeks":"{{ time }} semanas"}},"node-health":{"title":"Informaci\xf3n de salud","status":"Estatus:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","uptime-tracker":"Uptime tracker:","address-resolver":"Address resolver:","element-offline":"Offline"},"node-traffic-data":"Datos de tr\xe1fico"},"tabs":{"info":"Info","apps":"Apps","routing":"Enrutamiento"},"error-load":"Hubo un error al intentar refrescar los datos. Reintentando..."},"nodes":{"title":"Lista de visores","dmsg-title":"DMSG","update-all":"Actualizar todos los visores","hypervisor":"Hypervisor","state":"Estado","state-tooltip":"Estado actual","label":"Etiqueta","key":"Llave","dmsg-server":"Servidor DMSG","ping":"Ping","hypervisor-info":"Este visor es el Hypervisor actual.","copy-key":"Copiar llave","copy-dmsg":"Copiar llave DMSG","copy-data":"Copiar datos","view-node":"Ver visor","delete-node":"Remover visor","delete-all-offline":"Remover todos los visores offline","error-load":"Hubo un error al intentar refrescar la lista. Reintentando...","empty":"No hay ning\xfan visor conectado a este hypervisor.","empty-with-filter":"Ningun visor coincide con los criterios de filtrado seleccionados.","delete-node-confirmation":"\xbfSeguro que desea remover el visor de la lista?","delete-all-offline-confirmation":"\xbfSeguro que desea remover todos los visores offline de la lista?","delete-all-filtered-offline-confirmation":"Todos los visores offline que satisfagan los criterios de filtrado actuales ser\xe1n removidos de la lista. \xbfSeguro que desea continuar?","deleted":"Visor removido.","deleted-singular":"1 visor offline removido.","deleted-plural":"{{ number }} visores offline removidos.","no-offline-nodes":"No se encontraron visores offline.","no-visors-to-update":"No hay visores para actualizar.","filter-dialog":{"online":"El visor debe estar","label":"La etiqueta debe contener","key":"La llave debe contener","dmsg":"La llave del servidor DMSG debe contener","online-options":{"any":"Online u offline","online":"Online","offline":"Offline"}}},"edit-label":{"label":"Etiqueta","done":"Etiqueta guardada.","label-removed-warning":"La etiqueta fue removida."},"settings":{"title":"Configuraci\xf3n","password":{"initial-config-help":"Use esta opci\xf3n para establecer la contrase\xf1a inicial. Despu\xe9s de establecer una contrase\xf1a no es posible usar esta opci\xf3n para modificarla.","help":"Opciones para cambiar la contrase\xf1a.","old-password":"Contrase\xf1a actual","new-password":"Nueva contrase\xf1a","repeat-password":"Repita la contrase\xf1a","password-changed":"Contrase\xf1a cambiada.","error-changing":"Error cambiando la contrase\xf1a.","initial-config":{"title":"Establecer contrase\xf1a inicial","password":"Contrase\xf1a","repeat-password":"Repita la contrase\xf1a","set-password":"Establecer contrase\xf1a","done":"Contrase\xf1a establecida. Por favor \xfasela para acceder al sistema.","error":"Error. Por favor aseg\xfarese de que no hubiese establecido la contrase\xf1a anteriormente."},"errors":{"bad-old-password":"La contrase\xf1a actual introducida no es correcta.","old-password-required":"La contrase\xf1a actual es requerida.","new-password-error":"La contrase\xf1a debe tener entre 6 y 64 caracteres.","passwords-not-match":"Las contrase\xf1as no coinciden.","default-password":"No utilice la contrase\xf1a por defecto (1234)."}},"updater-config":{"open-link":"Mostrar la configuraci\xf3n del actualizador","open-confirmation":"La configuraci\xf3n del actualizador es s\xf3lo para usuarios experimentados. Seguro que desea continuar?","help":"Utilice este formulario para modificar la configuraci\xf3n que utilizar\xe1 el actualizador. Se ignorar\xe1n todos los campos vac\xedos. La configuraci\xf3n se utilizar\xe1 para todas las operaciones de actualizaci\xf3n, sin importar qu\xe9 elemento se est\xe9 actualizando, as\xed que por favor tenga cuidado.","channel":"Canal","version":"Versi\xf3n","archive-url":"URL del archivo","checksum-url":"URL del checksum","not-saved":"Los cambios a\xfan no se han guardado.","save":"Guardar cambios","remove-settings":"Remover la configuraci\xf3n","saved":"Las configuracion personalizada ha sido guardada.","removed":"Las configuracion personalizada ha sido removida.","save-confirmation":"\xbfSeguro que desea aplicar la configuraci\xf3n personalizada?","remove-confirmation":"\xbfSeguro que desea remover la configuraci\xf3n personalizada?"},"change-password":"Cambiar contrase\xf1a","refresh-rate":"Frecuencia de refrescado","refresh-rate-help":"Tiempo que el sistema espera para actualizar autom\xe1ticamente los datos.","refresh-rate-confirmation":"Frecuencia de refrescado cambiada.","seconds":"segundos"},"login":{"password":"Contrase\xf1a","incorrect-password":"Contrase\xf1a incorrecta.","initial-config":"Configurar lanzamiento inicial"},"actions":{"menu":{"terminal":"Terminal","config":"Configuraci\xf3n","update":"Actualizar","reboot":"Reiniciar"},"reboot":{"confirmation":"\xbfSeguro que desea reiniciar el visor?","done":"El visor se est\xe1 reiniciando."},"terminal-options":{"full":"Terminal completa","simple":"Terminal simple"},"terminal":{"title":"Terminal","input-start":"Terminal de Skywire para {{address}}","error":"Error inesperado mientras se intentaba ejecutar el comando."}},"update":{"title":"Actualizar","error-title":"Error","processing":"Buscando actualizaciones...","no-update":"No hay ninguna actualizaci\xf3n para el visor. La versi\xf3n instalada actualmente es:","no-updates":"No se encontraron nuevas actualizaciones.","already-updating":"Algunos visores ya est\xe1n siendo actualizandos:","update-available":"Las siguientes actualizaciones fueron encontradas:","update-available-singular":"Las siguientes actualizaciones para 1 visor fueron encontradas:","update-available-plural":"Las siguientes actualizaciones para {{ number }} visores fueron encontradas:","update-available-additional-singular":"Las siguientes actualizaciones adicionales para 1 visor fueron encontradas:","update-available-additional-plural":"Las siguientes actualizaciones adicionales para {{ number }} visores fueron encontradas:","update-instructions":"Haga clic en el bot\xf3n \'Instalar actualizaciones\' para continuar.","updating":"La operaci\xf3n de actualizaci\xf3n se ha iniciado, puede abrir esta ventana nuevamente para verificar el progreso:","version-change":"De {{ currentVersion }} a {{ newVersion }}","selected-channel":"Canal seleccionado:","downloaded-file-name-prefix":"Descargando: ","speed-prefix":"Velocidad: ","time-downloading-prefix":"Tiempo descargando: ","time-left-prefix":"Tiempo aprox. faltante: ","starting":"Preparando para actualizar","finished":"Conexi\xf3n de estado terminada","install":"Instalar actualizaciones"},"apps":{"log":{"title":"Log","empty":"No hay mensajes de log para el rango de fecha seleccionado.","filter-button":"Mostrando s\xf3lo logs generados desde:","filter":{"title":"Filtro","filter":"Mostrar s\xf3lo logs generados desde","7-days":"Los \xfaltimos 7 d\xedas","1-month":"Los \xfaltimos 30 d\xedas","3-months":"Los \xfaltimos 3 meses","6-months":"Los \xfaltimos 6 meses","1-year":"El \xfaltimo a\xf1o","all":"mostrar todos"}},"apps-list":{"title":"Aplicaciones","list-title":"Lista de aplicaciones","app-name":"Nombre","port":"Puerto","state":"Estado","state-tooltip":"Estado actual","auto-start":"Autoinicio","empty":"El visor no tiene ninguna aplicaci\xf3n.","empty-with-filter":"Ninguna app coincide con los criterios de filtrado seleccionados.","disable-autostart":"Deshabilitar autoinicio","enable-autostart":"Habilitar autoinicio","autostart-disabled":"Autoinicio deshabilitado","autostart-enabled":"Autoinicio habilitado","unavailable-logs-error":"No es posible mostrar los logs mientras la aplicaci\xf3n no se est\xe1 ejecutando.","filter-dialog":{"state":"El estado debe ser","name":"El nombre debe contener","port":"El puerto debe contener","autostart":"El autoinicio debe estar","state-options":{"any":"Iniciada o detenida","running":"Iniciada","stopped":"Detenida"},"autostart-options":{"any":"Activado or desactivado","enabled":"Activado","disabled":"Desactivado"}}},"vpn-socks-server-settings":{"socks-title":"Configuraci\xf3n de Skysocks","vpn-title":"Configuraci\xf3n de VPN-Server","new-password":"Nueva contrase\xf1a (dejar en blanco para eliminar la contrase\xf1a)","repeat-password":"Repita la contrase\xf1a","passwords-not-match":"Las contrase\xf1as no coinciden.","secure-mode-check":"Usar modo seguro","secure-mode-info":"Cuando est\xe1 activo, el servidor no permite SSH con los clientes y no permite ning\xfan tr\xe1fico de clientes VPN a la red local del servidor.","save":"Guardar","remove-passowrd-confirmation":"Ha dejado el campo de contrase\xf1a vac\xedo. \xbfSeguro que desea eliminar la contrase\xf1a?","change-passowrd-confirmation":"\xbfSeguro que desea cambiar la contrase\xf1a?","changes-made":"Los cambios han sido realizados."},"vpn-socks-client-settings":{"socks-title":"Configuraci\xf3n de Skysocks-Client","vpn-title":"Configuraci\xf3n de VPN-Client","discovery-tab":"Buscar","remote-visor-tab":"Introducir manualmente","settings-tab":"Configuracion","history-tab":"Historial","use":"Usar estos datos","change-note":"Cambiar nota","remove-entry":"Remover entrada","note":"Nota:","note-entered-manually":"Introducido manualmente","note-obtained":"Obtenido del servicio de descubrimiento","key":"Llave:","port":"Puerto:","location":"Ubicaci\xf3n:","state-available":"Disponible","state-offline":"Offline","public-key":"Llave p\xfablica del visor remoto","password":"Contrase\xf1a","password-history-warning":"Nota: la contrase\xf1a no se guardar\xe1 en el historial.","copy-pk-info":"Copiar la llave p\xfablica.","copied-pk-info":"La llave p\xfablica ha sido copiada.","copy-pk-error":"Hubo un problema al intentar cambiar la llave p\xfablica.","no-elements":"Actualmente no hay elementos para mostrar. Por favor, int\xe9ntelo de nuevo m\xe1s tarde.","no-elements-for-filters":"No hay elementos que cumplan los criterios de filtro.","no-filter":"No se ha seleccionado ning\xfan filtro","click-to-change":"Haga clic para cambiar","remote-key-length-error":"La llave p\xfablica debe tener 66 caracteres.","remote-key-chars-error":"La llave p\xfablica s\xf3lo debe contener caracteres hexadecimales.","save":"Guardar","remove-from-history-confirmation":"\xbfSeguro de que desea eliminar la entrada del historial?","change-key-confirmation":"\xbfSeguro que desea cambiar la llave p\xfablica del visor remoto?","changes-made":"Los cambios han sido realizados.","no-history":"Esta pesta\xf1a mostrar\xe1 las \xfaltimas {{ number }} llaves p\xfablicas usadas.","default-note-warning":"La nota por defecto ha sido utilizada.","pagination-info":"{{ currentElementsRange }} de {{ totalElements }}","killswitch-check":"Activar killswitch","killswitch-info":"Cuando est\xe1 activo, todas las conexiones de red se desactivar\xe1n si la aplicaci\xf3n se est\xe1 ejecutando pero la protecci\xf3n VPN est\xe1 interrumpida (por errores temporales o cualquier otro problema).","settings-changed-alert":"Los cambios a\xfan no se han guardado.","save-settings":"Guardar configuracion","change-note-dialog":{"title":"Cambiar Nota","note":"Nota"},"password-dialog":{"title":"Introducir Contrase\xf1a","password":"Contrase\xf1a","info":"Se le solicita una contrase\xf1a porque una contrase\xf1a fue utilizada cuando se cre\xf3 la entrada seleccionada, pero no fue guardada por razones de seguridad. Puede dejar la contrase\xf1a vac\xeda si es necesario.","continue-button":"Continuar"},"filter-dialog":{"title":"Filtros","country":"El pa\xeds debe ser","any-country":"Cualquiera","location":"La ubicaci\xf3n debe contener","pub-key":"La llave p\xfablica debe contener","apply":"Aplicar"}},"stop-app":"Detener","start-app":"Iniciar","view-logs":"Ver logs","settings":"Configuraci\xf3n","error":"Se produjo un error y no fue posible realizar la operaci\xf3n.","stop-confirmation":"\xbfSeguro que desea detener la aplicaci\xf3n?","stop-selected-confirmation":"\xbfSeguro que desea detener las aplicaciones seleccionadas?","disable-autostart-confirmation":"\xbfSeguro que desea deshabilitar el autoinicio de la aplicaci\xf3n?","enable-autostart-confirmation":"\xbfSeguro que desea habilitar el autoinicio de la aplicaci\xf3n?","disable-autostart-selected-confirmation":"\xbfSeguro que desea deshabilitar el autoinicio de las aplicaciones seleccionadas?","enable-autostart-selected-confirmation":"\xbfSeguro que desea habilitar el autoinicio de las aplicaciones seleccionadas?","operation-completed":"Operaci\xf3n completada.","operation-unnecessary":"La selecci\xf3n ya tiene la configuraci\xf3n solicitada.","status-running":"Corriendo","status-stopped":"Detenida","status-failed":"Fallida","status-running-tooltip":"La aplicaci\xf3n est\xe1 actualmente corriendo","status-stopped-tooltip":"La aplicaci\xf3n est\xe1 actualmente detenida","status-failed-tooltip":"Algo sali\xf3 mal. Revise los mensajes de la aplicaci\xf3n para m\xe1s informaci\xf3n"},"transports":{"title":"Transportes","remove-all-offline":"Remover todos los transportes offline","remove-all-offline-confirmation":"\xbfSeguro que desea remover todos los transportes offline?","remove-all-filtered-offline-confirmation":"Todos los transportes offline que satisfagan los criterios de filtrado actuales ser\xe1n removidos. \xbfSeguro que desea continuar?","list-title":"Lista de transportes","state":"Estado","state-tooltip":"Estado actual","id":"ID","remote-node":"Remoto","type":"Tipo","create":"Crear transporte","delete-confirmation":"\xbfSeguro que desea borrar el transporte?","delete-selected-confirmation":"\xbfSeguro que desea borrar los transportes seleccionados?","delete":"Borrar transporte","deleted":"Operaci\xf3n de borrado completada.","empty":"El visor no tiene ning\xfan transporte.","empty-with-filter":"Ningun transporte coincide con los criterios de filtrado seleccionados.","statuses":{"online":"Online","online-tooltip":"El transporte est\xe1 online","offline":"Offline","offline-tooltip":"El transporte est\xe1 offline"},"details":{"title":"Detalles","basic":{"title":"Informaci\xf3n b\xe1sica","state":"Estado:","id":"ID:","local-pk":"Llave p\xfablica local:","remote-pk":"Llave p\xfablica remota:","type":"Tipo:"},"data":{"title":"Transmisi\xf3n de datos","uploaded":"Datos enviados:","downloaded":"Datos recibidos:"}},"dialog":{"remote-key":"Llave p\xfablica remota","label":"Nombre del transporte (opcional)","transport-type":"Tipo de transporte","success":"Transporte creado.","success-without-label":"El transporte fue creado, pero no fue posible guardar la etiqueta.","errors":{"remote-key-length-error":"La llave p\xfablica remota debe tener 66 caracteres.","remote-key-chars-error":"La llave p\xfablica remota s\xf3lo debe contener caracteres hexadecimales.","transport-type-error":"El tipo de transporte es requerido."}},"filter-dialog":{"online":"El transporte debe estar","id":"El id debe contener","remote-node":"La llave remota debe contener","online-options":{"any":"Online u offline","online":"Online","offline":"Offline"}}},"routes":{"title":"Rutas","list-title":"Lista de rutas","key":"Llave","type":"Tipo","source":"Inicio","destination":"Destino","delete-confirmation":"\xbfSeguro que desea borrar la ruta?","delete-selected-confirmation":"\xbfSeguro que desea borrar las rutas seleccionadas?","delete":"Borrar ruta","deleted":"Operaci\xf3n de borrado completada.","empty":"El visor no tiene ninguna ruta.","empty-with-filter":"Ninguna ruta coincide con los criterios de filtrado seleccionados.","details":{"title":"Detalles","basic":{"title":"Informaci\xf3n b\xe1sica","key":"Llave:","rule":"Regla:"},"summary":{"title":"Resumen de regla","keep-alive":"Keep alive:","type":"Tipo de regla:","key-route-id":"ID de la llave de la ruta:"},"specific-fields-titles":{"app":"Campos de applicaci\xf3n","forward":"Campos de reenv\xedo","intermediary-forward":"Campos de reenv\xedo intermedio"},"specific-fields":{"route-id":"ID de la siguiente ruta:","transport-id":"ID del siguiente transporte:","destination-pk":"Llave p\xfablica de destino:","source-pk":"Llave p\xfablica de origen:","destination-port":"Puerto de destino:","source-port":"Puerto de origen:"}},"filter-dialog":{"key":"La llave debe contener","type":"El tipo debe ser","source":"El inicio debe contener","destination":"El destino debe contener","any-type-option":"Cualquiera"}},"copy":{"tooltip":"Presione para copiar","tooltip-with-text":"{{ text }} (Presione para copiar)","copied":"\xa1Copiado!"},"selection":{"select-all":"Seleccionar todo","unselect-all":"Deseleccionar todo","delete-all":"Borrar los elementos seleccionados","start-all":"Iniciar las apps seleccionadas","stop-all":"Detener las apps seleccionadas","enable-autostart-all":"Habilitar el autoinicio de las apps seleccionadas","disable-autostart-all":"Deshabilitar el autoinicio de las apps seleccionadas"},"refresh-button":{"seconds":"Refrescado hace unos segundos","minute":"Refrescado hace un minuto","minutes":"Refrescado hace {{ time }} minutos","hour":"Refrescado hace una hora","hours":"Refrescado hace {{ time }} horas","day":"Refrescado hace un d\xeda","days":"Refrescado hace {{ time }} d\xedas","week":"Refrescado hace una semana","weeks":"Refrescado hace {{ time }} semanas","error-tooltip":"Hubo un error al intentar refrescar los datos. Reintentando autom\xe1ticamente cada {{ time }} segundos..."},"view-all-link":{"label":"Ver todos los {{ number }} elementos"},"paginator":{"first":"Primera","last":"\xdaltima","total":"Total: {{ number }} p\xe1ginas","select-page-title":"Seleccionar p\xe1gina"},"confirmation":{"header-text":"Confirmaci\xf3n","confirm-button":"S\xed","cancel-button":"No","close":"Cerrar","error-header-text":"Error","done-header-text":"Hecho"},"language":{"title":"Seleccionar lenguaje"},"tabs-window":{"title":"Cambiar pesta\xf1a"}}')}}]); \ No newline at end of file diff --git a/cmd/skywire-visor/static/9.28280a196edf9818e2b5.js b/cmd/skywire-visor/static/9.28280a196edf9818e2b5.js new file mode 100644 index 0000000000..7c2bb57f43 --- /dev/null +++ b/cmd/skywire-visor/static/9.28280a196edf9818e2b5.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[9],{bIFx:function(e){e.exports=JSON.parse('{"common":{"save":"Save","cancel":"Cancel","downloaded":"Downloaded","uploaded":"Uploaded","loading-error":"There was an error getting the data. Retrying...","operation-error":"There was an error trying to complete the operation.","no-connection-error":"There is no internet connection or connection to the Hypervisor.","error":"Error:","refreshed":"Data refreshed.","options":"Options","logout":"Logout","logout-error":"Error logging out.","time-in-ms":"{{ time }}ms","ok":"Ok","unknown":"Unknown","close":"Close"},"labeled-element":{"edit-label":"Edit label","remove-label":"Remove label","copy":"Copy","remove-label-confirmation":"Do you really want to remove the label?","unnamed-element":"Unnamed","unnamed-local-visor":"Local visor","local-element":"Local","tooltip":"Click to copy the entry or change the label","tooltip-with-text":"{{ text }} (Click to copy the entry or change the label)"},"labels":{"title":"Labels","list-title":"Label list","label":"Label","id":"Element ID","type":"Type","delete-confirmation":"Are you sure you want to delete the label?","delete-selected-confirmation":"Are you sure you want to delete the selected labels?","delete":"Delete label","deleted":"Delete operation completed.","empty":"There aren\'t any saved labels.","empty-with-filter":"No label matches the selected filtering criteria.","filter-dialog":{"label":"The label must contain","id":"The id must contain","type":"The type must be","type-options":{"any":"Any","visor":"Visor","dmsg-server":"DMSG server","transport":"Transport"}}},"filters":{"filter-action":"Filter","active-filters":"Active filters: ","press-to-remove":"(Press to remove)","remove-confirmation":"Are you sure you want to remove the filters?"},"tables":{"title":"Order by","sorting-title":"Ordered by:","ascending-order":"(ascending)","descending-order":"(descending)"},"start":{"title":"Start"},"node":{"title":"Visor details","not-found":"Visor not found.","statuses":{"online":"Online","online-tooltip":"Visor is online.","partially-online":"Online with problems","partially-online-tooltip":"Visor is online but not all services are working. For more information, open the details page and check the \\"Health info\\" section.","offline":"Offline","offline-tooltip":"Visor is offline."},"details":{"node-info":{"title":"Visor Info","label":"Label:","public-key":"Public key:","port":"Port:","dmsg-server":"DMSG server:","ping":"Ping:","node-version":"Visor version:","time":{"title":"Time online:","seconds":"a few seconds","minute":"1 minute","minutes":"{{ time }} minutes","hour":"1 hour","hours":"{{ time }} hours","day":"1 day","days":"{{ time }} days","week":"1 week","weeks":"{{ time }} weeks"}},"node-health":{"title":"Health info","status":"Status:","transport-discovery":"Transport discovery:","route-finder":"Route finder:","setup-node":"Setup node:","uptime-tracker":"Uptime tracker:","address-resolver":"Address resolver:","element-offline":"Offline"},"node-traffic-data":"Traffic data"},"tabs":{"info":"Info","apps":"Apps","routing":"Routing"},"error-load":"An error occurred while refreshing the data. Retrying..."},"nodes":{"title":"Visor list","dmsg-title":"DMSG","update-all":"Update all visors","hypervisor":"Hypervisor","state":"State","state-tooltip":"Current state","label":"Label","key":"Key","dmsg-server":"DMSG server","ping":"Ping","hypervisor-info":"This visor is the current Hypervisor.","copy-key":"Copy key","copy-dmsg":"Copy DMSG server key","copy-data":"Copy data","view-node":"View visor","delete-node":"Remove visor","delete-all-offline":"Remove all offline visors","error-load":"An error occurred while refreshing the list. Retrying...","empty":"There aren\'t any visors connected to this hypervisor.","empty-with-filter":"No visor matches the selected filtering criteria.","delete-node-confirmation":"Are you sure you want to remove the visor from the list?","delete-all-offline-confirmation":"Are you sure you want to remove all offline visors from the list?","delete-all-filtered-offline-confirmation":"All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?","deleted":"Visor removed.","deleted-singular":"1 offline visor removed.","deleted-plural":"{{ number }} offline visors removed.","no-offline-nodes":"No offline visors found.","no-visors-to-update":"There are no visors to update.","filter-dialog":{"online":"The visor must be","label":"The label must contain","key":"The public key must contain","dmsg":"The DMSG server key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"edit-label":{"label":"Label","done":"Label saved.","label-removed-warning":"The label was removed."},"settings":{"title":"Settings","password":{"initial-config-help":"Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.","help":"Options for changing your password.","old-password":"Old password","new-password":"New password","repeat-password":"Repeat password","password-changed":"Password changed.","error-changing":"Error changing password.","initial-config":{"title":"Set initial password","password":"Password","repeat-password":"Repeat password","set-password":"Set password","done":"Password set. Please use it to access the system.","error":"Error. Please make sure you have not already set the password."},"errors":{"bad-old-password":"The provided old password is not correct.","old-password-required":"Old password is required.","new-password-error":"Password must be 6-64 characters long.","passwords-not-match":"Passwords do not match.","default-password":"Don\'t use the default password (1234)."}},"updater-config":{"open-link":"Show updater settings","open-confirmation":"The updater settings are for experienced users only. Are you sure you want to continue?","help":"Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.","channel":"Channel","version":"Version","archive-url":"Archive URL","checksum-url":"Checksum URL","not-saved":"The changes have not been saved yet.","save":"Save changes","remove-settings":"Remove the settings","saved":"The custom settings have been saved.","removed":"The custom settings have been removed.","save-confirmation":"Are you sure you want to apply the custom settings?","remove-confirmation":"Are you sure you want to remove the custom settings?"},"change-password":"Change password","refresh-rate":"Refresh rate","refresh-rate-help":"Time the system waits to update the data automatically.","refresh-rate-confirmation":"Refresh rate changed.","seconds":"seconds"},"login":{"password":"Password","incorrect-password":"Incorrect password.","initial-config":"Configure initial launch"},"actions":{"menu":{"terminal":"Terminal","config":"Configuration","update":"Update","reboot":"Reboot"},"reboot":{"confirmation":"Are you sure you want to reboot the visor?","done":"The visor is restarting."},"terminal-options":{"full":"Full terminal","simple":"Simple terminal"},"terminal":{"title":"Terminal","input-start":"Skywire terminal for {{address}}","error":"Unexpected error while trying to execute the command."}},"update":{"title":"Update","error-title":"Error","processing":"Looking for updates...","no-update":"There is no update for the visor. The currently installed version is:","no-updates":"No new updates were found.","already-updating":"Some visors are already being updated:","update-available":"The following updates were found:","update-available-singular":"The following updates for 1 visor were found:","update-available-plural":"The following updates for {{ number }} visors were found:","update-available-additional-singular":"The following additional updates for 1 visor were found:","update-available-additional-plural":"The following additional updates for {{ number }} visors were found:","update-instructions":"Click the \'Install updates\' button to continue.","updating":"The update operation has been started, you can open this window again for checking the progress:","version-change":"From {{ currentVersion }} to {{ newVersion }}","selected-channel":"Selected channel:","downloaded-file-name-prefix":"Downloading: ","speed-prefix":"Speed: ","time-downloading-prefix":"Time downloading: ","time-left-prefix":"Aprox. time left: ","starting":"Preparing to update","finished":"Status connection finished","install":"Install updates"},"apps":{"log":{"title":"Log","empty":"There are no log messages for the selected time range.","filter-button":"Only showing logs generated since:","filter":{"title":"Filter","filter":"Only show logs generated since","7-days":"The last 7 days","1-month":"The last 30 days","3-months":"The last 3 months","6-months":"The last 6 months","1-year":"The last year","all":"Show all"}},"apps-list":{"title":"Applications","list-title":"Application list","app-name":"Name","port":"Port","state":"State","state-tooltip":"Current state","auto-start":"Auto start","empty":"Visor doesn\'t have any applications.","empty-with-filter":"No app matches the selected filtering criteria.","disable-autostart":"Disable autostart","enable-autostart":"Enable autostart","autostart-disabled":"Autostart disabled","autostart-enabled":"Autostart enabled","unavailable-logs-error":"Unable to show the logs while the app is not running.","filter-dialog":{"state":"The state must be","name":"The name must contain","port":"The port must contain","autostart":"The autostart must be","state-options":{"any":"Running or stopped","running":"Running","stopped":"Stopped"},"autostart-options":{"any":"Enabled or disabled","enabled":"Enabled","disabled":"Disabled"}}},"vpn-socks-server-settings":{"socks-title":"Skysocks Settings","vpn-title":"VPN-Server Settings","new-password":"New password (Leave empty to remove the password)","repeat-password":"Repeat password","passwords-not-match":"Passwords do not match.","secure-mode-check":"Use secure mode","secure-mode-info":"When active, the server doesn\'t allow client/server SSH and doesn\'t allow any traffic from VPN clients to the server local network.","save":"Save","remove-passowrd-confirmation":"You left the password field empty. Are you sure you want to remove the password?","change-passowrd-confirmation":"Are you sure you want to change the password?","changes-made":"The changes have been made."},"vpn-socks-client-settings":{"socks-title":"Skysocks-Client Settings","vpn-title":"VPN-Client Settings","discovery-tab":"Search","remote-visor-tab":"Enter manually","history-tab":"History","settings-tab":"Settings","use":"Use this data","change-note":"Change note","remove-entry":"Remove entry","note":"Note:","note-entered-manually":"Entered manually","note-obtained":"Obtained from the discovery service","key":"Key:","port":"Port:","location":"Location:","state-available":"Available","state-offline":"Offline","public-key":"Remote visor public key","password":"Password","password-history-warning":"Note: the password will not be saved in the history.","copy-pk-info":"Copy public key.","copied-pk-info":"The public key has been copied.","copy-pk-error":"There was a problem copying the public key.","no-elements":"Currently there are no elements to show. Please try again later.","no-elements-for-filters":"There are no elements that meet the filter criteria.","no-filter":"No filter has been selected","click-to-change":"Click to change","remote-key-length-error":"The public key must be 66 characters long.","remote-key-chars-error":"The public key must only contain hexadecimal characters.","save":"Save","remove-from-history-confirmation":"Are you sure you want to remove the entry from the history?","change-key-confirmation":"Are you sure you want to change the remote visor public key?","changes-made":"The changes have been made.","no-history":"This tab will show the last {{ number }} public keys used.","default-note-warning":"The default note has been used.","pagination-info":"{{ currentElementsRange }} of {{ totalElements }}","killswitch-check":"Activate killswitch","killswitch-info":"When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem).","settings-changed-alert":" The changes have not been saved yet.","save-settings":"Save settings","change-note-dialog":{"title":"Change Note","note":"Note"},"password-dialog":{"title":"Enter Password","password":"Password","info":"You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.","continue-button":"Continue"},"filter-dialog":{"title":"Filters","country":"The country must be","any-country":"Any","location":"The location must contain","pub-key":"The public key must contain","apply":"Apply"}},"stop-app":"Stop","start-app":"Start","view-logs":"View logs","settings":"Settings","error":"An error has occured and it was not possible to perform the operation.","stop-confirmation":"Are you sure you want to stop the app?","stop-selected-confirmation":"Are you sure you want to stop the selected apps?","disable-autostart-confirmation":"Are you sure you want to disable autostart for the app?","enable-autostart-confirmation":"Are you sure you want to enable autostart for the app?","disable-autostart-selected-confirmation":"Are you sure you want to disable autostart for the selected apps?","enable-autostart-selected-confirmation":"Are you sure you want to enable autostart for the selected apps?","operation-completed":"Operation completed.","operation-unnecessary":"The selection already has the requested setting.","status-running":"Running","status-stopped":"Stopped","status-failed":"Failed","status-running-tooltip":"App is currently running","status-stopped-tooltip":"App is currently stopped","status-failed-tooltip":"Something went wrong. Check the app\'s messages for more information"},"transports":{"title":"Transports","remove-all-offline":"Remove all offline transports","remove-all-offline-confirmation":"Are you sure you want to remove all offline transports?","remove-all-filtered-offline-confirmation":"All offline transports satisfying the current filtering criteria will be removed. Are you sure you want to continue?","list-title":"Transport list","state":"State","state-tooltip":"Current state","id":"ID","remote-node":"Remote","type":"Type","create":"Create transport","delete-confirmation":"Are you sure you want to delete the transport?","delete-selected-confirmation":"Are you sure you want to delete the selected transports?","delete":"Delete transport","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any transports.","empty-with-filter":"No transport matches the selected filtering criteria.","statuses":{"online":"Online","online-tooltip":"Transport is online","offline":"Offline","offline-tooltip":"Transport is offline"},"details":{"title":"Details","basic":{"title":"Basic info","state":"State:","id":"ID:","local-pk":"Local public key:","remote-pk":"Remote public key:","type":"Type:"},"data":{"title":"Data transmission","uploaded":"Uploaded data:","downloaded":"Downloaded data:"}},"dialog":{"remote-key":"Remote public key","label":"Identification name (optional)","transport-type":"Transport type","success":"Transport created.","success-without-label":"The transport was created, but it was not possible to save the label.","errors":{"remote-key-length-error":"The remote public key must be 66 characters long.","remote-key-chars-error":"The remote public key must only contain hexadecimal characters.","transport-type-error":"The transport type is required."}},"filter-dialog":{"online":"The transport must be","id":"The id must contain","remote-node":"The remote key must contain","online-options":{"any":"Online or offline","online":"Online","offline":"Offline"}}},"routes":{"title":"Routes","list-title":"Route list","key":"Key","type":"Type","source":"Source","destination":"Destination","delete-confirmation":"Are you sure you want to delete the route?","delete-selected-confirmation":"Are you sure you want to delete the selected routes?","delete":"Delete route","deleted":"Delete operation completed.","empty":"Visor doesn\'t have any routes.","empty-with-filter":"No route matches the selected filtering criteria.","details":{"title":"Details","basic":{"title":"Basic info","key":"Key:","rule":"Rule:"},"summary":{"title":"Rule summary","keep-alive":"Keep alive:","type":"Rule type:","key-route-id":"Key route ID:"},"specific-fields-titles":{"app":"App fields","forward":"Forward fields","intermediary-forward":"Intermediary forward fields"},"specific-fields":{"route-id":"Next route ID:","transport-id":"Next transport ID:","destination-pk":"Destination public key:","source-pk":"Source public key:","destination-port":"Destination port:","source-port":"Source port:"}},"filter-dialog":{"key":"The key must contain","type":"The type must be","source":"The source must contain","destination":"The destination must contain","any-type-option":"Any"}},"copy":{"tooltip":"Click to copy","tooltip-with-text":"{{ text }} (Click to copy)","copied":"Copied!"},"selection":{"select-all":"Select all","unselect-all":"Unselect all","delete-all":"Delete all selected elements","start-all":"Start all selected apps","stop-all":"Stop all selected apps","enable-autostart-all":"Enable autostart for all selected apps","disable-autostart-all":"Disable autostart for all selected apps"},"refresh-button":{"seconds":"Updated a few seconds ago","minute":"Updated 1 minute ago","minutes":"Updated {{ time }} minutes ago","hour":"Updated 1 hour ago","hours":"Updated {{ time }} hours ago","day":"Updated 1 day ago","days":"Updated {{ time }} days ago","week":"Updated 1 week ago","weeks":"Updated {{ time }} weeks ago","error-tooltip":"There was an error updating the data. Retrying automatically every {{ time }} seconds..."},"view-all-link":{"label":"View all {{ number }} elements"},"paginator":{"first":"First","last":"Last","total":"Total: {{ number }} pages","select-page-title":"Select page"},"confirmation":{"header-text":"Confirmation","confirm-button":"Yes","cancel-button":"No","close":"Close","error-header-text":"Error","done-header-text":"Done"},"language":{"title":"Select language"},"tabs-window":{"title":"Change tab"}}')}}]); \ No newline at end of file diff --git a/cmd/skywire-visor/static/MaterialIcons-Regular.4674f8ded773cb03e824.eot b/cmd/skywire-visor/static/MaterialIcons-Regular.4674f8ded773cb03e824.eot new file mode 100644 index 0000000000..70508ebabc Binary files /dev/null and b/cmd/skywire-visor/static/MaterialIcons-Regular.4674f8ded773cb03e824.eot differ diff --git a/cmd/skywire-visor/static/MaterialIcons-Regular.5e7382c63da0098d634a.ttf b/cmd/skywire-visor/static/MaterialIcons-Regular.5e7382c63da0098d634a.ttf new file mode 100644 index 0000000000..7015564ad1 Binary files /dev/null and b/cmd/skywire-visor/static/MaterialIcons-Regular.5e7382c63da0098d634a.ttf differ diff --git a/cmd/skywire-visor/static/MaterialIcons-Regular.83bebaf37c09c7e1c3ee.woff b/cmd/skywire-visor/static/MaterialIcons-Regular.83bebaf37c09c7e1c3ee.woff new file mode 100644 index 0000000000..b648a3eea2 Binary files /dev/null and b/cmd/skywire-visor/static/MaterialIcons-Regular.83bebaf37c09c7e1c3ee.woff differ diff --git a/cmd/skywire-visor/static/MaterialIcons-Regular.cff684e59ffb052d72cb.woff2 b/cmd/skywire-visor/static/MaterialIcons-Regular.cff684e59ffb052d72cb.woff2 new file mode 100644 index 0000000000..9fa2112520 Binary files /dev/null and b/cmd/skywire-visor/static/MaterialIcons-Regular.cff684e59ffb052d72cb.woff2 differ diff --git a/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.eot b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.eot new file mode 100644 index 0000000000..70508ebabc Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.eot differ diff --git a/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.ijmap b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.ijmap new file mode 100644 index 0000000000..d9f1d259f3 --- /dev/null +++ b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.ijmap @@ -0,0 +1 @@ +{"icons":{"e84d":{"name":"3d Rotation"},"eb3b":{"name":"Ac Unit"},"e190":{"name":"Access Alarm"},"e191":{"name":"Access Alarms"},"e192":{"name":"Access Time"},"e84e":{"name":"Accessibility"},"e914":{"name":"Accessible"},"e84f":{"name":"Account Balance"},"e850":{"name":"Account Balance Wallet"},"e851":{"name":"Account Box"},"e853":{"name":"Account Circle"},"e60e":{"name":"Adb"},"e145":{"name":"Add"},"e439":{"name":"Add A Photo"},"e193":{"name":"Add Alarm"},"e003":{"name":"Add Alert"},"e146":{"name":"Add Box"},"e147":{"name":"Add Circle"},"e148":{"name":"Add Circle Outline"},"e567":{"name":"Add Location"},"e854":{"name":"Add Shopping Cart"},"e39d":{"name":"Add To Photos"},"e05c":{"name":"Add To Queue"},"e39e":{"name":"Adjust"},"e630":{"name":"Airline Seat Flat"},"e631":{"name":"Airline Seat Flat Angled"},"e632":{"name":"Airline Seat Individual Suite"},"e633":{"name":"Airline Seat Legroom Extra"},"e634":{"name":"Airline Seat Legroom Normal"},"e635":{"name":"Airline Seat Legroom Reduced"},"e636":{"name":"Airline Seat Recline Extra"},"e637":{"name":"Airline Seat Recline Normal"},"e195":{"name":"Airplanemode Active"},"e194":{"name":"Airplanemode Inactive"},"e055":{"name":"Airplay"},"eb3c":{"name":"Airport Shuttle"},"e855":{"name":"Alarm"},"e856":{"name":"Alarm Add"},"e857":{"name":"Alarm Off"},"e858":{"name":"Alarm On"},"e019":{"name":"Album"},"eb3d":{"name":"All Inclusive"},"e90b":{"name":"All Out"},"e859":{"name":"Android"},"e85a":{"name":"Announcement"},"e5c3":{"name":"Apps"},"e149":{"name":"Archive"},"e5c4":{"name":"Arrow Back"},"e5db":{"name":"Arrow Downward"},"e5c5":{"name":"Arrow Drop Down"},"e5c6":{"name":"Arrow Drop Down Circle"},"e5c7":{"name":"Arrow Drop Up"},"e5c8":{"name":"Arrow Forward"},"e5d8":{"name":"Arrow Upward"},"e060":{"name":"Art Track"},"e85b":{"name":"Aspect Ratio"},"e85c":{"name":"Assessment"},"e85d":{"name":"Assignment"},"e85e":{"name":"Assignment Ind"},"e85f":{"name":"Assignment Late"},"e860":{"name":"Assignment Return"},"e861":{"name":"Assignment Returned"},"e862":{"name":"Assignment Turned In"},"e39f":{"name":"Assistant"},"e3a0":{"name":"Assistant Photo"},"e226":{"name":"Attach File"},"e227":{"name":"Attach Money"},"e2bc":{"name":"Attachment"},"e3a1":{"name":"Audiotrack"},"e863":{"name":"Autorenew"},"e01b":{"name":"Av Timer"},"e14a":{"name":"Backspace"},"e864":{"name":"Backup"},"e19c":{"name":"Battery Alert"},"e1a3":{"name":"Battery Charging Full"},"e1a4":{"name":"Battery Full"},"e1a5":{"name":"Battery Std"},"e1a6":{"name":"Battery Unknown"},"eb3e":{"name":"Beach Access"},"e52d":{"name":"Beenhere"},"e14b":{"name":"Block"},"e1a7":{"name":"Bluetooth"},"e60f":{"name":"Bluetooth Audio"},"e1a8":{"name":"Bluetooth Connected"},"e1a9":{"name":"Bluetooth Disabled"},"e1aa":{"name":"Bluetooth Searching"},"e3a2":{"name":"Blur Circular"},"e3a3":{"name":"Blur Linear"},"e3a4":{"name":"Blur Off"},"e3a5":{"name":"Blur On"},"e865":{"name":"Book"},"e866":{"name":"Bookmark"},"e867":{"name":"Bookmark Border"},"e228":{"name":"Border All"},"e229":{"name":"Border Bottom"},"e22a":{"name":"Border Clear"},"e22b":{"name":"Border Color"},"e22c":{"name":"Border Horizontal"},"e22d":{"name":"Border Inner"},"e22e":{"name":"Border Left"},"e22f":{"name":"Border Outer"},"e230":{"name":"Border Right"},"e231":{"name":"Border Style"},"e232":{"name":"Border Top"},"e233":{"name":"Border Vertical"},"e06b":{"name":"Branding Watermark"},"e3a6":{"name":"Brightness 1"},"e3a7":{"name":"Brightness 2"},"e3a8":{"name":"Brightness 3"},"e3a9":{"name":"Brightness 4"},"e3aa":{"name":"Brightness 5"},"e3ab":{"name":"Brightness 6"},"e3ac":{"name":"Brightness 7"},"e1ab":{"name":"Brightness Auto"},"e1ac":{"name":"Brightness High"},"e1ad":{"name":"Brightness Low"},"e1ae":{"name":"Brightness Medium"},"e3ad":{"name":"Broken Image"},"e3ae":{"name":"Brush"},"e6dd":{"name":"Bubble Chart"},"e868":{"name":"Bug Report"},"e869":{"name":"Build"},"e43c":{"name":"Burst Mode"},"e0af":{"name":"Business"},"eb3f":{"name":"Business Center"},"e86a":{"name":"Cached"},"e7e9":{"name":"Cake"},"e0b0":{"name":"Call"},"e0b1":{"name":"Call End"},"e0b2":{"name":"Call Made"},"e0b3":{"name":"Call Merge"},"e0b4":{"name":"Call Missed"},"e0e4":{"name":"Call Missed Outgoing"},"e0b5":{"name":"Call Received"},"e0b6":{"name":"Call Split"},"e06c":{"name":"Call To Action"},"e3af":{"name":"Camera"},"e3b0":{"name":"Camera Alt"},"e8fc":{"name":"Camera Enhance"},"e3b1":{"name":"Camera Front"},"e3b2":{"name":"Camera Rear"},"e3b3":{"name":"Camera Roll"},"e5c9":{"name":"Cancel"},"e8f6":{"name":"Card Giftcard"},"e8f7":{"name":"Card Membership"},"e8f8":{"name":"Card Travel"},"eb40":{"name":"Casino"},"e307":{"name":"Cast"},"e308":{"name":"Cast Connected"},"e3b4":{"name":"Center Focus Strong"},"e3b5":{"name":"Center Focus Weak"},"e86b":{"name":"Change History"},"e0b7":{"name":"Chat"},"e0ca":{"name":"Chat Bubble"},"e0cb":{"name":"Chat Bubble Outline"},"e5ca":{"name":"Check"},"e834":{"name":"Check Box"},"e835":{"name":"Check Box Outline Blank"},"e86c":{"name":"Check Circle"},"e5cb":{"name":"Chevron Left"},"e5cc":{"name":"Chevron Right"},"eb41":{"name":"Child Care"},"eb42":{"name":"Child Friendly"},"e86d":{"name":"Chrome Reader Mode"},"e86e":{"name":"Class"},"e14c":{"name":"Clear"},"e0b8":{"name":"Clear All"},"e5cd":{"name":"Close"},"e01c":{"name":"Closed Caption"},"e2bd":{"name":"Cloud"},"e2be":{"name":"Cloud Circle"},"e2bf":{"name":"Cloud Done"},"e2c0":{"name":"Cloud Download"},"e2c1":{"name":"Cloud Off"},"e2c2":{"name":"Cloud Queue"},"e2c3":{"name":"Cloud Upload"},"e86f":{"name":"Code"},"e3b6":{"name":"Collections"},"e431":{"name":"Collections Bookmark"},"e3b7":{"name":"Color Lens"},"e3b8":{"name":"Colorize"},"e0b9":{"name":"Comment"},"e3b9":{"name":"Compare"},"e915":{"name":"Compare Arrows"},"e30a":{"name":"Computer"},"e638":{"name":"Confirmation Number"},"e0d0":{"name":"Contact Mail"},"e0cf":{"name":"Contact Phone"},"e0ba":{"name":"Contacts"},"e14d":{"name":"Content Copy"},"e14e":{"name":"Content Cut"},"e14f":{"name":"Content Paste"},"e3ba":{"name":"Control Point"},"e3bb":{"name":"Control Point Duplicate"},"e90c":{"name":"Copyright"},"e150":{"name":"Create"},"e2cc":{"name":"Create New Folder"},"e870":{"name":"Credit Card"},"e3be":{"name":"Crop"},"e3bc":{"name":"Crop 16 9"},"e3bd":{"name":"Crop 3 2"},"e3bf":{"name":"Crop 5 4"},"e3c0":{"name":"Crop 7 5"},"e3c1":{"name":"Crop Din"},"e3c2":{"name":"Crop Free"},"e3c3":{"name":"Crop Landscape"},"e3c4":{"name":"Crop Original"},"e3c5":{"name":"Crop Portrait"},"e437":{"name":"Crop Rotate"},"e3c6":{"name":"Crop Square"},"e871":{"name":"Dashboard"},"e1af":{"name":"Data Usage"},"e916":{"name":"Date Range"},"e3c7":{"name":"Dehaze"},"e872":{"name":"Delete"},"e92b":{"name":"Delete Forever"},"e16c":{"name":"Delete Sweep"},"e873":{"name":"Description"},"e30b":{"name":"Desktop Mac"},"e30c":{"name":"Desktop Windows"},"e3c8":{"name":"Details"},"e30d":{"name":"Developer Board"},"e1b0":{"name":"Developer Mode"},"e335":{"name":"Device Hub"},"e1b1":{"name":"Devices"},"e337":{"name":"Devices Other"},"e0bb":{"name":"Dialer Sip"},"e0bc":{"name":"Dialpad"},"e52e":{"name":"Directions"},"e52f":{"name":"Directions Bike"},"e532":{"name":"Directions Boat"},"e530":{"name":"Directions Bus"},"e531":{"name":"Directions Car"},"e534":{"name":"Directions Railway"},"e566":{"name":"Directions Run"},"e533":{"name":"Directions Subway"},"e535":{"name":"Directions Transit"},"e536":{"name":"Directions Walk"},"e610":{"name":"Disc Full"},"e875":{"name":"Dns"},"e612":{"name":"Do Not Disturb"},"e611":{"name":"Do Not Disturb Alt"},"e643":{"name":"Do Not Disturb Off"},"e644":{"name":"Do Not Disturb On"},"e30e":{"name":"Dock"},"e7ee":{"name":"Domain"},"e876":{"name":"Done"},"e877":{"name":"Done All"},"e917":{"name":"Donut Large"},"e918":{"name":"Donut Small"},"e151":{"name":"Drafts"},"e25d":{"name":"Drag Handle"},"e613":{"name":"Drive Eta"},"e1b2":{"name":"Dvr"},"e3c9":{"name":"Edit"},"e568":{"name":"Edit Location"},"e8fb":{"name":"Eject"},"e0be":{"name":"Email"},"e63f":{"name":"Enhanced Encryption"},"e01d":{"name":"Equalizer"},"e000":{"name":"Error"},"e001":{"name":"Error Outline"},"e926":{"name":"Euro Symbol"},"e56d":{"name":"Ev Station"},"e878":{"name":"Event"},"e614":{"name":"Event Available"},"e615":{"name":"Event Busy"},"e616":{"name":"Event Note"},"e903":{"name":"Event Seat"},"e879":{"name":"Exit To App"},"e5ce":{"name":"Expand Less"},"e5cf":{"name":"Expand More"},"e01e":{"name":"Explicit"},"e87a":{"name":"Explore"},"e3ca":{"name":"Exposure"},"e3cb":{"name":"Exposure Neg 1"},"e3cc":{"name":"Exposure Neg 2"},"e3cd":{"name":"Exposure Plus 1"},"e3ce":{"name":"Exposure Plus 2"},"e3cf":{"name":"Exposure Zero"},"e87b":{"name":"Extension"},"e87c":{"name":"Face"},"e01f":{"name":"Fast Forward"},"e020":{"name":"Fast Rewind"},"e87d":{"name":"Favorite"},"e87e":{"name":"Favorite Border"},"e06d":{"name":"Featured Play List"},"e06e":{"name":"Featured Video"},"e87f":{"name":"Feedback"},"e05d":{"name":"Fiber Dvr"},"e061":{"name":"Fiber Manual Record"},"e05e":{"name":"Fiber New"},"e06a":{"name":"Fiber Pin"},"e062":{"name":"Fiber Smart Record"},"e2c4":{"name":"File Download"},"e2c6":{"name":"File Upload"},"e3d3":{"name":"Filter"},"e3d0":{"name":"Filter 1"},"e3d1":{"name":"Filter 2"},"e3d2":{"name":"Filter 3"},"e3d4":{"name":"Filter 4"},"e3d5":{"name":"Filter 5"},"e3d6":{"name":"Filter 6"},"e3d7":{"name":"Filter 7"},"e3d8":{"name":"Filter 8"},"e3d9":{"name":"Filter 9"},"e3da":{"name":"Filter 9 Plus"},"e3db":{"name":"Filter B And W"},"e3dc":{"name":"Filter Center Focus"},"e3dd":{"name":"Filter Drama"},"e3de":{"name":"Filter Frames"},"e3df":{"name":"Filter Hdr"},"e152":{"name":"Filter List"},"e3e0":{"name":"Filter None"},"e3e2":{"name":"Filter Tilt Shift"},"e3e3":{"name":"Filter Vintage"},"e880":{"name":"Find In Page"},"e881":{"name":"Find Replace"},"e90d":{"name":"Fingerprint"},"e5dc":{"name":"First Page"},"eb43":{"name":"Fitness Center"},"e153":{"name":"Flag"},"e3e4":{"name":"Flare"},"e3e5":{"name":"Flash Auto"},"e3e6":{"name":"Flash Off"},"e3e7":{"name":"Flash On"},"e539":{"name":"Flight"},"e904":{"name":"Flight Land"},"e905":{"name":"Flight Takeoff"},"e3e8":{"name":"Flip"},"e882":{"name":"Flip To Back"},"e883":{"name":"Flip To Front"},"e2c7":{"name":"Folder"},"e2c8":{"name":"Folder Open"},"e2c9":{"name":"Folder Shared"},"e617":{"name":"Folder Special"},"e167":{"name":"Font Download"},"e234":{"name":"Format Align Center"},"e235":{"name":"Format Align Justify"},"e236":{"name":"Format Align Left"},"e237":{"name":"Format Align Right"},"e238":{"name":"Format Bold"},"e239":{"name":"Format Clear"},"e23a":{"name":"Format Color Fill"},"e23b":{"name":"Format Color Reset"},"e23c":{"name":"Format Color Text"},"e23d":{"name":"Format Indent Decrease"},"e23e":{"name":"Format Indent Increase"},"e23f":{"name":"Format Italic"},"e240":{"name":"Format Line Spacing"},"e241":{"name":"Format List Bulleted"},"e242":{"name":"Format List Numbered"},"e243":{"name":"Format Paint"},"e244":{"name":"Format Quote"},"e25e":{"name":"Format Shapes"},"e245":{"name":"Format Size"},"e246":{"name":"Format Strikethrough"},"e247":{"name":"Format Textdirection L To R"},"e248":{"name":"Format Textdirection R To L"},"e249":{"name":"Format Underlined"},"e0bf":{"name":"Forum"},"e154":{"name":"Forward"},"e056":{"name":"Forward 10"},"e057":{"name":"Forward 30"},"e058":{"name":"Forward 5"},"eb44":{"name":"Free Breakfast"},"e5d0":{"name":"Fullscreen"},"e5d1":{"name":"Fullscreen Exit"},"e24a":{"name":"Functions"},"e927":{"name":"G Translate"},"e30f":{"name":"Gamepad"},"e021":{"name":"Games"},"e90e":{"name":"Gavel"},"e155":{"name":"Gesture"},"e884":{"name":"Get App"},"e908":{"name":"Gif"},"eb45":{"name":"Golf Course"},"e1b3":{"name":"Gps Fixed"},"e1b4":{"name":"Gps Not Fixed"},"e1b5":{"name":"Gps Off"},"e885":{"name":"Grade"},"e3e9":{"name":"Gradient"},"e3ea":{"name":"Grain"},"e1b8":{"name":"Graphic Eq"},"e3eb":{"name":"Grid Off"},"e3ec":{"name":"Grid On"},"e7ef":{"name":"Group"},"e7f0":{"name":"Group Add"},"e886":{"name":"Group Work"},"e052":{"name":"Hd"},"e3ed":{"name":"Hdr Off"},"e3ee":{"name":"Hdr On"},"e3f1":{"name":"Hdr Strong"},"e3f2":{"name":"Hdr Weak"},"e310":{"name":"Headset"},"e311":{"name":"Headset Mic"},"e3f3":{"name":"Healing"},"e023":{"name":"Hearing"},"e887":{"name":"Help"},"e8fd":{"name":"Help Outline"},"e024":{"name":"High Quality"},"e25f":{"name":"Highlight"},"e888":{"name":"Highlight Off"},"e889":{"name":"History"},"e88a":{"name":"Home"},"eb46":{"name":"Hot Tub"},"e53a":{"name":"Hotel"},"e88b":{"name":"Hourglass Empty"},"e88c":{"name":"Hourglass Full"},"e902":{"name":"Http"},"e88d":{"name":"Https"},"e3f4":{"name":"Image"},"e3f5":{"name":"Image Aspect Ratio"},"e0e0":{"name":"Import Contacts"},"e0c3":{"name":"Import Export"},"e912":{"name":"Important Devices"},"e156":{"name":"Inbox"},"e909":{"name":"Indeterminate Check Box"},"e88e":{"name":"Info"},"e88f":{"name":"Info Outline"},"e890":{"name":"Input"},"e24b":{"name":"Insert Chart"},"e24c":{"name":"Insert Comment"},"e24d":{"name":"Insert Drive File"},"e24e":{"name":"Insert Emoticon"},"e24f":{"name":"Insert Invitation"},"e250":{"name":"Insert Link"},"e251":{"name":"Insert Photo"},"e891":{"name":"Invert Colors"},"e0c4":{"name":"Invert Colors Off"},"e3f6":{"name":"Iso"},"e312":{"name":"Keyboard"},"e313":{"name":"Keyboard Arrow Down"},"e314":{"name":"Keyboard Arrow Left"},"e315":{"name":"Keyboard Arrow Right"},"e316":{"name":"Keyboard Arrow Up"},"e317":{"name":"Keyboard Backspace"},"e318":{"name":"Keyboard Capslock"},"e31a":{"name":"Keyboard Hide"},"e31b":{"name":"Keyboard Return"},"e31c":{"name":"Keyboard Tab"},"e31d":{"name":"Keyboard Voice"},"eb47":{"name":"Kitchen"},"e892":{"name":"Label"},"e893":{"name":"Label Outline"},"e3f7":{"name":"Landscape"},"e894":{"name":"Language"},"e31e":{"name":"Laptop"},"e31f":{"name":"Laptop Chromebook"},"e320":{"name":"Laptop Mac"},"e321":{"name":"Laptop Windows"},"e5dd":{"name":"Last Page"},"e895":{"name":"Launch"},"e53b":{"name":"Layers"},"e53c":{"name":"Layers Clear"},"e3f8":{"name":"Leak Add"},"e3f9":{"name":"Leak Remove"},"e3fa":{"name":"Lens"},"e02e":{"name":"Library Add"},"e02f":{"name":"Library Books"},"e030":{"name":"Library Music"},"e90f":{"name":"Lightbulb Outline"},"e919":{"name":"Line Style"},"e91a":{"name":"Line Weight"},"e260":{"name":"Linear Scale"},"e157":{"name":"Link"},"e438":{"name":"Linked Camera"},"e896":{"name":"List"},"e0c6":{"name":"Live Help"},"e639":{"name":"Live Tv"},"e53f":{"name":"Local Activity"},"e53d":{"name":"Local Airport"},"e53e":{"name":"Local Atm"},"e540":{"name":"Local Bar"},"e541":{"name":"Local Cafe"},"e542":{"name":"Local Car Wash"},"e543":{"name":"Local Convenience Store"},"e556":{"name":"Local Dining"},"e544":{"name":"Local Drink"},"e545":{"name":"Local Florist"},"e546":{"name":"Local Gas Station"},"e547":{"name":"Local Grocery Store"},"e548":{"name":"Local Hospital"},"e549":{"name":"Local Hotel"},"e54a":{"name":"Local Laundry Service"},"e54b":{"name":"Local Library"},"e54c":{"name":"Local Mall"},"e54d":{"name":"Local Movies"},"e54e":{"name":"Local Offer"},"e54f":{"name":"Local Parking"},"e550":{"name":"Local Pharmacy"},"e551":{"name":"Local Phone"},"e552":{"name":"Local Pizza"},"e553":{"name":"Local Play"},"e554":{"name":"Local Post Office"},"e555":{"name":"Local Printshop"},"e557":{"name":"Local See"},"e558":{"name":"Local Shipping"},"e559":{"name":"Local Taxi"},"e7f1":{"name":"Location City"},"e1b6":{"name":"Location Disabled"},"e0c7":{"name":"Location Off"},"e0c8":{"name":"Location On"},"e1b7":{"name":"Location Searching"},"e897":{"name":"Lock"},"e898":{"name":"Lock Open"},"e899":{"name":"Lock Outline"},"e3fc":{"name":"Looks"},"e3fb":{"name":"Looks 3"},"e3fd":{"name":"Looks 4"},"e3fe":{"name":"Looks 5"},"e3ff":{"name":"Looks 6"},"e400":{"name":"Looks One"},"e401":{"name":"Looks Two"},"e028":{"name":"Loop"},"e402":{"name":"Loupe"},"e16d":{"name":"Low Priority"},"e89a":{"name":"Loyalty"},"e158":{"name":"Mail"},"e0e1":{"name":"Mail Outline"},"e55b":{"name":"Map"},"e159":{"name":"Markunread"},"e89b":{"name":"Markunread Mailbox"},"e322":{"name":"Memory"},"e5d2":{"name":"Menu"},"e252":{"name":"Merge Type"},"e0c9":{"name":"Message"},"e029":{"name":"Mic"},"e02a":{"name":"Mic None"},"e02b":{"name":"Mic Off"},"e618":{"name":"Mms"},"e253":{"name":"Mode Comment"},"e254":{"name":"Mode Edit"},"e263":{"name":"Monetization On"},"e25c":{"name":"Money Off"},"e403":{"name":"Monochrome Photos"},"e7f2":{"name":"Mood"},"e7f3":{"name":"Mood Bad"},"e619":{"name":"More"},"e5d3":{"name":"More Horiz"},"e5d4":{"name":"More Vert"},"e91b":{"name":"Motorcycle"},"e323":{"name":"Mouse"},"e168":{"name":"Move To Inbox"},"e02c":{"name":"Movie"},"e404":{"name":"Movie Creation"},"e43a":{"name":"Movie Filter"},"e6df":{"name":"Multiline Chart"},"e405":{"name":"Music Note"},"e063":{"name":"Music Video"},"e55c":{"name":"My Location"},"e406":{"name":"Nature"},"e407":{"name":"Nature People"},"e408":{"name":"Navigate Before"},"e409":{"name":"Navigate Next"},"e55d":{"name":"Navigation"},"e569":{"name":"Near Me"},"e1b9":{"name":"Network Cell"},"e640":{"name":"Network Check"},"e61a":{"name":"Network Locked"},"e1ba":{"name":"Network Wifi"},"e031":{"name":"New Releases"},"e16a":{"name":"Next Week"},"e1bb":{"name":"Nfc"},"e641":{"name":"No Encryption"},"e0cc":{"name":"No Sim"},"e033":{"name":"Not Interested"},"e06f":{"name":"Note"},"e89c":{"name":"Note Add"},"e7f4":{"name":"Notifications"},"e7f7":{"name":"Notifications Active"},"e7f5":{"name":"Notifications None"},"e7f6":{"name":"Notifications Off"},"e7f8":{"name":"Notifications Paused"},"e90a":{"name":"Offline Pin"},"e63a":{"name":"Ondemand Video"},"e91c":{"name":"Opacity"},"e89d":{"name":"Open In Browser"},"e89e":{"name":"Open In New"},"e89f":{"name":"Open With"},"e7f9":{"name":"Pages"},"e8a0":{"name":"Pageview"},"e40a":{"name":"Palette"},"e925":{"name":"Pan Tool"},"e40b":{"name":"Panorama"},"e40c":{"name":"Panorama Fish Eye"},"e40d":{"name":"Panorama Horizontal"},"e40e":{"name":"Panorama Vertical"},"e40f":{"name":"Panorama Wide Angle"},"e7fa":{"name":"Party Mode"},"e034":{"name":"Pause"},"e035":{"name":"Pause Circle Filled"},"e036":{"name":"Pause Circle Outline"},"e8a1":{"name":"Payment"},"e7fb":{"name":"People"},"e7fc":{"name":"People Outline"},"e8a2":{"name":"Perm Camera Mic"},"e8a3":{"name":"Perm Contact Calendar"},"e8a4":{"name":"Perm Data Setting"},"e8a5":{"name":"Perm Device Information"},"e8a6":{"name":"Perm Identity"},"e8a7":{"name":"Perm Media"},"e8a8":{"name":"Perm Phone Msg"},"e8a9":{"name":"Perm Scan Wifi"},"e7fd":{"name":"Person"},"e7fe":{"name":"Person Add"},"e7ff":{"name":"Person Outline"},"e55a":{"name":"Person Pin"},"e56a":{"name":"Person Pin Circle"},"e63b":{"name":"Personal Video"},"e91d":{"name":"Pets"},"e0cd":{"name":"Phone"},"e324":{"name":"Phone Android"},"e61b":{"name":"Phone Bluetooth Speaker"},"e61c":{"name":"Phone Forwarded"},"e61d":{"name":"Phone In Talk"},"e325":{"name":"Phone Iphone"},"e61e":{"name":"Phone Locked"},"e61f":{"name":"Phone Missed"},"e620":{"name":"Phone Paused"},"e326":{"name":"Phonelink"},"e0db":{"name":"Phonelink Erase"},"e0dc":{"name":"Phonelink Lock"},"e327":{"name":"Phonelink Off"},"e0dd":{"name":"Phonelink Ring"},"e0de":{"name":"Phonelink Setup"},"e410":{"name":"Photo"},"e411":{"name":"Photo Album"},"e412":{"name":"Photo Camera"},"e43b":{"name":"Photo Filter"},"e413":{"name":"Photo Library"},"e432":{"name":"Photo Size Select Actual"},"e433":{"name":"Photo Size Select Large"},"e434":{"name":"Photo Size Select Small"},"e415":{"name":"Picture As Pdf"},"e8aa":{"name":"Picture In Picture"},"e911":{"name":"Picture In Picture Alt"},"e6c4":{"name":"Pie Chart"},"e6c5":{"name":"Pie Chart Outlined"},"e55e":{"name":"Pin Drop"},"e55f":{"name":"Place"},"e037":{"name":"Play Arrow"},"e038":{"name":"Play Circle Filled"},"e039":{"name":"Play Circle Outline"},"e906":{"name":"Play For Work"},"e03b":{"name":"Playlist Add"},"e065":{"name":"Playlist Add Check"},"e05f":{"name":"Playlist Play"},"e800":{"name":"Plus One"},"e801":{"name":"Poll"},"e8ab":{"name":"Polymer"},"eb48":{"name":"Pool"},"e0ce":{"name":"Portable Wifi Off"},"e416":{"name":"Portrait"},"e63c":{"name":"Power"},"e336":{"name":"Power Input"},"e8ac":{"name":"Power Settings New"},"e91e":{"name":"Pregnant Woman"},"e0df":{"name":"Present To All"},"e8ad":{"name":"Print"},"e645":{"name":"Priority High"},"e80b":{"name":"Public"},"e255":{"name":"Publish"},"e8ae":{"name":"Query Builder"},"e8af":{"name":"Question Answer"},"e03c":{"name":"Queue"},"e03d":{"name":"Queue Music"},"e066":{"name":"Queue Play Next"},"e03e":{"name":"Radio"},"e837":{"name":"Radio Button Checked"},"e836":{"name":"Radio Button Unchecked"},"e560":{"name":"Rate Review"},"e8b0":{"name":"Receipt"},"e03f":{"name":"Recent Actors"},"e91f":{"name":"Record Voice Over"},"e8b1":{"name":"Redeem"},"e15a":{"name":"Redo"},"e5d5":{"name":"Refresh"},"e15b":{"name":"Remove"},"e15c":{"name":"Remove Circle"},"e15d":{"name":"Remove Circle Outline"},"e067":{"name":"Remove From Queue"},"e417":{"name":"Remove Red Eye"},"e928":{"name":"Remove Shopping Cart"},"e8fe":{"name":"Reorder"},"e040":{"name":"Repeat"},"e041":{"name":"Repeat One"},"e042":{"name":"Replay"},"e059":{"name":"Replay 10"},"e05a":{"name":"Replay 30"},"e05b":{"name":"Replay 5"},"e15e":{"name":"Reply"},"e15f":{"name":"Reply All"},"e160":{"name":"Report"},"e8b2":{"name":"Report Problem"},"e56c":{"name":"Restaurant"},"e561":{"name":"Restaurant Menu"},"e8b3":{"name":"Restore"},"e929":{"name":"Restore Page"},"e0d1":{"name":"Ring Volume"},"e8b4":{"name":"Room"},"eb49":{"name":"Room Service"},"e418":{"name":"Rotate 90 Degrees Ccw"},"e419":{"name":"Rotate Left"},"e41a":{"name":"Rotate Right"},"e920":{"name":"Rounded Corner"},"e328":{"name":"Router"},"e921":{"name":"Rowing"},"e0e5":{"name":"Rss Feed"},"e642":{"name":"Rv Hookup"},"e562":{"name":"Satellite"},"e161":{"name":"Save"},"e329":{"name":"Scanner"},"e8b5":{"name":"Schedule"},"e80c":{"name":"School"},"e1be":{"name":"Screen Lock Landscape"},"e1bf":{"name":"Screen Lock Portrait"},"e1c0":{"name":"Screen Lock Rotation"},"e1c1":{"name":"Screen Rotation"},"e0e2":{"name":"Screen Share"},"e623":{"name":"Sd Card"},"e1c2":{"name":"Sd Storage"},"e8b6":{"name":"Search"},"e32a":{"name":"Security"},"e162":{"name":"Select All"},"e163":{"name":"Send"},"e811":{"name":"Sentiment Dissatisfied"},"e812":{"name":"Sentiment Neutral"},"e813":{"name":"Sentiment Satisfied"},"e814":{"name":"Sentiment Very Dissatisfied"},"e815":{"name":"Sentiment Very Satisfied"},"e8b8":{"name":"Settings"},"e8b9":{"name":"Settings Applications"},"e8ba":{"name":"Settings Backup Restore"},"e8bb":{"name":"Settings Bluetooth"},"e8bd":{"name":"Settings Brightness"},"e8bc":{"name":"Settings Cell"},"e8be":{"name":"Settings Ethernet"},"e8bf":{"name":"Settings Input Antenna"},"e8c0":{"name":"Settings Input Component"},"e8c1":{"name":"Settings Input Composite"},"e8c2":{"name":"Settings Input Hdmi"},"e8c3":{"name":"Settings Input Svideo"},"e8c4":{"name":"Settings Overscan"},"e8c5":{"name":"Settings Phone"},"e8c6":{"name":"Settings Power"},"e8c7":{"name":"Settings Remote"},"e1c3":{"name":"Settings System Daydream"},"e8c8":{"name":"Settings Voice"},"e80d":{"name":"Share"},"e8c9":{"name":"Shop"},"e8ca":{"name":"Shop Two"},"e8cb":{"name":"Shopping Basket"},"e8cc":{"name":"Shopping Cart"},"e261":{"name":"Short Text"},"e6e1":{"name":"Show Chart"},"e043":{"name":"Shuffle"},"e1c8":{"name":"Signal Cellular 4 Bar"},"e1cd":{"name":"Signal Cellular Connected No Internet 4 Bar"},"e1ce":{"name":"Signal Cellular No Sim"},"e1cf":{"name":"Signal Cellular Null"},"e1d0":{"name":"Signal Cellular Off"},"e1d8":{"name":"Signal Wifi 4 Bar"},"e1d9":{"name":"Signal Wifi 4 Bar Lock"},"e1da":{"name":"Signal Wifi Off"},"e32b":{"name":"Sim Card"},"e624":{"name":"Sim Card Alert"},"e044":{"name":"Skip Next"},"e045":{"name":"Skip Previous"},"e41b":{"name":"Slideshow"},"e068":{"name":"Slow Motion Video"},"e32c":{"name":"Smartphone"},"eb4a":{"name":"Smoke Free"},"eb4b":{"name":"Smoking Rooms"},"e625":{"name":"Sms"},"e626":{"name":"Sms Failed"},"e046":{"name":"Snooze"},"e164":{"name":"Sort"},"e053":{"name":"Sort By Alpha"},"eb4c":{"name":"Spa"},"e256":{"name":"Space Bar"},"e32d":{"name":"Speaker"},"e32e":{"name":"Speaker Group"},"e8cd":{"name":"Speaker Notes"},"e92a":{"name":"Speaker Notes Off"},"e0d2":{"name":"Speaker Phone"},"e8ce":{"name":"Spellcheck"},"e838":{"name":"Star"},"e83a":{"name":"Star Border"},"e839":{"name":"Star Half"},"e8d0":{"name":"Stars"},"e0d3":{"name":"Stay Current Landscape"},"e0d4":{"name":"Stay Current Portrait"},"e0d5":{"name":"Stay Primary Landscape"},"e0d6":{"name":"Stay Primary Portrait"},"e047":{"name":"Stop"},"e0e3":{"name":"Stop Screen Share"},"e1db":{"name":"Storage"},"e8d1":{"name":"Store"},"e563":{"name":"Store Mall Directory"},"e41c":{"name":"Straighten"},"e56e":{"name":"Streetview"},"e257":{"name":"Strikethrough S"},"e41d":{"name":"Style"},"e5d9":{"name":"Subdirectory Arrow Left"},"e5da":{"name":"Subdirectory Arrow Right"},"e8d2":{"name":"Subject"},"e064":{"name":"Subscriptions"},"e048":{"name":"Subtitles"},"e56f":{"name":"Subway"},"e8d3":{"name":"Supervisor Account"},"e049":{"name":"Surround Sound"},"e0d7":{"name":"Swap Calls"},"e8d4":{"name":"Swap Horiz"},"e8d5":{"name":"Swap Vert"},"e8d6":{"name":"Swap Vertical Circle"},"e41e":{"name":"Switch Camera"},"e41f":{"name":"Switch Video"},"e627":{"name":"Sync"},"e628":{"name":"Sync Disabled"},"e629":{"name":"Sync Problem"},"e62a":{"name":"System Update"},"e8d7":{"name":"System Update Alt"},"e8d8":{"name":"Tab"},"e8d9":{"name":"Tab Unselected"},"e32f":{"name":"Tablet"},"e330":{"name":"Tablet Android"},"e331":{"name":"Tablet Mac"},"e420":{"name":"Tag Faces"},"e62b":{"name":"Tap And Play"},"e564":{"name":"Terrain"},"e262":{"name":"Text Fields"},"e165":{"name":"Text Format"},"e0d8":{"name":"Textsms"},"e421":{"name":"Texture"},"e8da":{"name":"Theaters"},"e8db":{"name":"Thumb Down"},"e8dc":{"name":"Thumb Up"},"e8dd":{"name":"Thumbs Up Down"},"e62c":{"name":"Time To Leave"},"e422":{"name":"Timelapse"},"e922":{"name":"Timeline"},"e425":{"name":"Timer"},"e423":{"name":"Timer 10"},"e424":{"name":"Timer 3"},"e426":{"name":"Timer Off"},"e264":{"name":"Title"},"e8de":{"name":"Toc"},"e8df":{"name":"Today"},"e8e0":{"name":"Toll"},"e427":{"name":"Tonality"},"e913":{"name":"Touch App"},"e332":{"name":"Toys"},"e8e1":{"name":"Track Changes"},"e565":{"name":"Traffic"},"e570":{"name":"Train"},"e571":{"name":"Tram"},"e572":{"name":"Transfer Within A Station"},"e428":{"name":"Transform"},"e8e2":{"name":"Translate"},"e8e3":{"name":"Trending Down"},"e8e4":{"name":"Trending Flat"},"e8e5":{"name":"Trending Up"},"e429":{"name":"Tune"},"e8e6":{"name":"Turned In"},"e8e7":{"name":"Turned In Not"},"e333":{"name":"Tv"},"e169":{"name":"Unarchive"},"e166":{"name":"Undo"},"e5d6":{"name":"Unfold Less"},"e5d7":{"name":"Unfold More"},"e923":{"name":"Update"},"e1e0":{"name":"Usb"},"e8e8":{"name":"Verified User"},"e258":{"name":"Vertical Align Bottom"},"e259":{"name":"Vertical Align Center"},"e25a":{"name":"Vertical Align Top"},"e62d":{"name":"Vibration"},"e070":{"name":"Video Call"},"e071":{"name":"Video Label"},"e04a":{"name":"Video Library"},"e04b":{"name":"Videocam"},"e04c":{"name":"Videocam Off"},"e338":{"name":"Videogame Asset"},"e8e9":{"name":"View Agenda"},"e8ea":{"name":"View Array"},"e8eb":{"name":"View Carousel"},"e8ec":{"name":"View Column"},"e42a":{"name":"View Comfy"},"e42b":{"name":"View Compact"},"e8ed":{"name":"View Day"},"e8ee":{"name":"View Headline"},"e8ef":{"name":"View List"},"e8f0":{"name":"View Module"},"e8f1":{"name":"View Quilt"},"e8f2":{"name":"View Stream"},"e8f3":{"name":"View Week"},"e435":{"name":"Vignette"},"e8f4":{"name":"Visibility"},"e8f5":{"name":"Visibility Off"},"e62e":{"name":"Voice Chat"},"e0d9":{"name":"Voicemail"},"e04d":{"name":"Volume Down"},"e04e":{"name":"Volume Mute"},"e04f":{"name":"Volume Off"},"e050":{"name":"Volume Up"},"e0da":{"name":"Vpn Key"},"e62f":{"name":"Vpn Lock"},"e1bc":{"name":"Wallpaper"},"e002":{"name":"Warning"},"e334":{"name":"Watch"},"e924":{"name":"Watch Later"},"e42c":{"name":"Wb Auto"},"e42d":{"name":"Wb Cloudy"},"e42e":{"name":"Wb Incandescent"},"e436":{"name":"Wb Iridescent"},"e430":{"name":"Wb Sunny"},"e63d":{"name":"Wc"},"e051":{"name":"Web"},"e069":{"name":"Web Asset"},"e16b":{"name":"Weekend"},"e80e":{"name":"Whatshot"},"e1bd":{"name":"Widgets"},"e63e":{"name":"Wifi"},"e1e1":{"name":"Wifi Lock"},"e1e2":{"name":"Wifi Tethering"},"e8f9":{"name":"Work"},"e25b":{"name":"Wrap Text"},"e8fa":{"name":"Youtube Searched For"},"e8ff":{"name":"Zoom In"},"e900":{"name":"Zoom Out"},"e56b":{"name":"Zoom Out Map"}}} \ No newline at end of file diff --git a/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.svg b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.svg new file mode 100644 index 0000000000..a449327e22 --- /dev/null +++ b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.svg @@ -0,0 +1,2373 @@ + + + + + +Created by FontForge 20151118 at Mon Feb 8 11:58:02 2016 + By shyndman +Copyright 2015 Google, Inc. All Rights Reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.ttf b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.ttf new file mode 100644 index 0000000000..7015564ad1 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.ttf differ diff --git a/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.woff b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.woff new file mode 100644 index 0000000000..b648a3eea2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.woff differ diff --git a/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.woff2 b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.woff2 new file mode 100644 index 0000000000..9fa2112520 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/material-icons/MaterialIcons-Regular.woff2 differ diff --git a/cmd/skywire-visor/static/assets/fonts/material-icons/material-icons.css b/cmd/skywire-visor/static/assets/fonts/material-icons/material-icons.css new file mode 100644 index 0000000000..2270c09d01 --- /dev/null +++ b/cmd/skywire-visor/static/assets/fonts/material-icons/material-icons.css @@ -0,0 +1,36 @@ +@font-face { + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url(MaterialIcons-Regular.eot); /* For IE6-8 */ + src: local('Material Icons'), + local('MaterialIcons-Regular'), + url(MaterialIcons-Regular.woff2) format('woff2'), + url(MaterialIcons-Regular.woff) format('woff'), + url(MaterialIcons-Regular.ttf) format('truetype'); +} + +.material-icons { + font-family: 'Material Icons'; + font-weight: normal; + font-style: normal; + font-size: 24px; /* Preferred icon size */ + display: inline-block; + line-height: 1; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + white-space: nowrap; + direction: ltr; + + /* Support for all WebKit browsers. */ + -webkit-font-smoothing: antialiased; + /* Support for Safari and Chrome. */ + text-rendering: optimizeLegibility; + + /* Support for Firefox. */ + -moz-osx-font-smoothing: grayscale; + + /* Support for IE. */ + font-feature-settings: 'liga'; +} diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Bold.woff b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Bold.woff new file mode 100644 index 0000000000..780de6d66c Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Bold.woff differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Bold.woff2 b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Bold.woff2 new file mode 100644 index 0000000000..72a32ab2c2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Bold.woff2 differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Light.woff b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Light.woff new file mode 100644 index 0000000000..a9946092d5 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Light.woff differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Light.woff2 b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Light.woff2 new file mode 100644 index 0000000000..b3238fa265 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Light.woff2 differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Regular.woff b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Regular.woff new file mode 100644 index 0000000000..40c056ea4c Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Regular.woff differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Regular.woff2 b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Regular.woff2 new file mode 100644 index 0000000000..46f89cfbeb Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/Skycoin-Regular.woff2 differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-bold-webfont.woff b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-bold-webfont.woff new file mode 100644 index 0000000000..6654e9bb80 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-bold-webfont.woff differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-bold-webfont.woff2 b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-bold-webfont.woff2 new file mode 100644 index 0000000000..4e2ddc2725 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-bold-webfont.woff2 differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-light-webfont.woff b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-light-webfont.woff new file mode 100644 index 0000000000..785db05b10 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-light-webfont.woff differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-light-webfont.woff2 b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-light-webfont.woff2 new file mode 100644 index 0000000000..fdf0e49335 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-light-webfont.woff2 differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-regular-webfont.woff b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-regular-webfont.woff new file mode 100644 index 0000000000..76d9d48132 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-regular-webfont.woff differ diff --git a/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-regular-webfont.woff2 b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-regular-webfont.woff2 new file mode 100644 index 0000000000..20d463d131 Binary files /dev/null and b/cmd/skywire-visor/static/assets/fonts/skycoin/skycoin-regular-webfont.woff2 differ diff --git a/cmd/skywire-visor/static/assets/i18n/README.md b/cmd/skywire-visor/static/assets/i18n/README.md new file mode 100644 index 0000000000..eea868164a --- /dev/null +++ b/cmd/skywire-visor/static/assets/i18n/README.md @@ -0,0 +1,273 @@ +This folder contains the GUI translation files. To maintain order and be able +to easily make any necessary updates to the translation files after updating +the main text file, please follow its instructions if you are working with +its contents. + +# Contents of this folder + +The contents of this folder are: + +- `README.md`: this file. + +- `check.js`: file with the script for detecting if a translation file has errors +or should be updated. + +- `en.json`: main file with all the texts of the application, in English. It should +only be modified when changing the texts of the application (add, modify and +delete). This means that the file must not be modified while creating a new +ranslation or modifying an existing one. + +- Various `xx.json` files: files with the translated versions of the texts of +`en.json`. + +- Various `xx_base.json` files: files with copies of `en.json` made the last time the +corresponding `xx.json` file was modified. + +Normally there is no need to modify the first two files. + +For more information about the `xx.json` and `xx_base.json`, please check the +[Add a new translation](#add-a-new-translation) and +[Update a translation](#update-a-translation) sections. + +# About the meaning of "xx" in this file + +Several parts of this file uses "xx" as part of file names or scripts, like +`xx.json` and `xx_base.json`. In fact, no file in this folder should be called +`xx.json` or `xx_base.json`, the "xx" part must be replaced with the two +characters code of the language. For example, if you are working with the Chinese +translation, the files will be `zh.json` and `zh_base.json`, instead of `xx.json` +and `xx_base.json`. The same if true for the scripts, if you are working with the +Chinese translation, instead of running `node check.js xx` you must run +`node check.js zh`. + +# Add a new translation + +First you must create in this folder two copies of the `en.json` file. The first +copy must be called `xx.json`, where the `xx` part must be the two characters code +of the new language. For example, for Chinese the name of the file should be +`zh.json`; for Spanish, `es.json`; for French, `fr.json`, etc. + +The second copy of `en.json` must be renamed to `xx_base.json`, where the `xx` part +must be the two characters code of the new language. This means that if the first +copy is named `zh.json`, the second one should be named `zh_base.json`. + +It is not necessary to follow a specific standard for the two characters code, but +it must be limited to two letters and be a recognizable code for the language. + +After creating the two files, simply translate the texts in `xx.json`. Please make +sure you do not modify the structure of `xx.json`, just modify the texts. + +The `xx_base.json` file must not be modified in any way, as it is used only as a way +to know what the state of `en.json` was the last time the `xx.json` file was +modified. This copy will be compared in the future with `en.json`, to verify if +there were modifications to `en.json` since the last time the translation file was +modified and if an update is needed. + +If the `xx.json` and `xx_base.json` files do not have the same elements, the +automatic tests could fail when uploading the changes to the repository, preventing +the changes from being accepted, so, again, it is important not to modify the +structure of `xx.json`, but only its contents. + +After doing all this, the translation will be ready, but will not be available in +the GUI until adding it to the code. + +# Verify the translation files + +This folder includes a script that is capable of automatically checking the +translation files, to detect problems and know what should be updated. + +For using it, your computer must have `Node.js` installed. + +## Checking for problems + +For detecting basic problems on the translation files, open a command line window +in this folder and run `node check.js`. This will check the following: + +- The `en.json` must exist, as it is the main language file for the app. + +- For every `xx.json` file (except `en.json`) an `xx_base.json` file must exist +and viceversa. + +- A `xx.json` file and its corresponding `xx_base.json` file must have the exact +same elements (only the content of that elements could be different), as the +`xx.json` is suposed to be the translation of the contents of `xx_base.json`. + +As you can see, this only checks for errors that could be made while creating or +modifying the `xx.json` and `xx_base.json` files, and does not check if any +translation needs to be updated. + +At the end of the script excecution, the console will display the list of all +errors found, if any. This check could be done automatically when making changes +to the repository, to reject updates with problems, so it is good idea to run it +manually before uploading changes. + +Note: at this time the script does not check if the elements of the files are +in the same order, but this could be added in the future, so it is recomended +not to change the order of the elements. + +## Checking if a language file needs to be updated + +To detect if an specific language needs updating, run `node check.js xx`, +where xx is the two characters code of the language you want to check. If you +want to check all languages, run `node check.js all`. + +By doing this, the script will perform all the checks described in the +[Checking for problems](#checking-for-problems) section, plus this: + +- The `en.json` and `xx_base.json` should have the same elements. If `en.json` +has elements that `xx_base.json` does not contain, it means that, since the +last time the translation file was updated, new texts have been added to the +application. If `xx_base.json` has elements that `en.json` does not contain, +it means that, since the last time the translation file was updated, some texts +have been removed from the application. Both cases mean that the translation +file should be updated. + +- The elements of `en.json` and `xx_base.json` should have the same content. +If any element have different content, it means that since the last time the +translation file was updated, some texts of the applications have been changed. +This means that the translation file should be updated. + +At the end of the script excecution, the console will display the list of all +errors found, if any. + +# Update a translation + +Before updating a translation file, you should follow the steps of the +[Checking if a language file needs to be updated](#Checking-if-a-language-file-needs-to-be-updated) +section. By doing so you will quikly know exactly what texts must be added, +deleted or edited. + +After doing that, make all the required modifications in the `xx.json` file, +this means adding, deleting and modifying all the elements indicated by the +script. Please be sure to modify only what is required and to add any new +element in the same position that it is in the `en.json` file. This process +is manual, so be sure check all the changes before finishing. + +After doing the modifications in `xx.json`, delete the `xx_base.json` file, +create a copy of `en.json` and rename it `xx_base.json`. The objetive is to +simply update the `xx_base.json` file to the current state of `en.json`. +this will make possible to check in the future if more updates are nedded, +due to new changes in `en.json`. + +Once all the changes are made, check again the language file as indicated +in the +[Checking if a language file needs to be updated](#Checking-if-a-language-file-needs-to-be-updated) +section. The script should not return errors. If the script returns errors, +please solve them before continuing. + +# How to edit the translation files + +The translation files are in json format (.json files). It is possible to +open these files in a text editor and edit them like normal text files. +However, the json files are used for coding and have a very strict format. +Because of this, **editing the files manually is not recommended** unless +you know exactly what you are doing. + +If you do not know the json format, this section includes useful +information to be able to edit the files easily. + +## Which application should be used for editing the files + +There are several application that allow editing json files, including +some text editors. However, it is recommended to use the Json Editor app +for Google Chrome. Among the advantages of this application are that it +is multiplatform, it allows editing the contents without having to +directly modify the json code and has a relatively simple interface. You +can add it to your Chrome browser from here: +https://chrome.google.com/webstore/detail/json-editor/lhkmoheomjbkfloacpgllgjcamhihfaj + +The app looks like this: + +![app](app1.png) + +As you can see, you can load/save files on the upper-right corner of +the app. The left part shows the source code and the right part shows +a tree view of the elements of the file and its contents. You can +ignore the source code and work with the tree view only. + +![app](app2.png) + +As you will not be editing the soutce code, you can hide it by presing +and draging the 3-dot button (1). While editing the file, you can use +the arrows (2) to expand/contract the different sections in which the +elements are organized. Once you find an item that you want to edit, +click on the content and modify the text (3). Please, do not make any +changes to the name of the element (4). + +You can use the 6-dot buttons (5) to move the elements to a different +location, but please avoid doing it, as that could alter the order of +the file in a way that would make it stop working. Also, as you will +not be working with the source code, avoid using the arrow +buttons (6). + +## Special codes + +Some texts in the language files have special codes that are not +shown in the user interface of the wallet, but serve special purposes. +The codes are: + +- **\\"**: due to how json files work, it is not possible to write +double quotes directly in the texts, the ccorrect way to add double +quotes to a json file is **\\"** (note that the 2 characters must not +be separated by a white space). If you use the Json Editor app for +Google Chrome, you can write double quotes normally and the app will +automatically add the **\\** character behind them, but that is just +a convenience for when you are writing, you could still find the +**\\"** code in files you are editing and have to work with it. + +- **{{ }}**: any text block similar to **{{ something }}** is a +special identifier that the code will replace with a different value +when the app is running. For example, if you find a text like "Your +balance is {{ value }} coins", the application will show something +like "Your balance is 21 coins". In that example the "21" is a value +that the app has to calculate, so it is not possible to add it directly +into the language file. If you find a **{{ }}** text block, please do +not translate it, just move the whole **{{ }}** text block to where the +value should be displayed. If you want to leave a while space before the +value, simply add a white space before the **{{ }}** text block, and do +the same after it if you want a white space after the value. + +- **\
      **: this code means "new line". It is just a way to tell +the code that the text after it should be added in a new line. + +# Make a translation available in the application + +Although creating the translation files is the most important step, it is +necessary to make some additional changes before a translation is +available in the application. + +The first thing to do is to add a bitmap in +[static/skywire-manager-src/src/assets/img/lang](/static/skywire-manager-src/src/assets/img/lang), +with the flag that will be used to identify the language. The bitmap +should be a .png file with transparent background and a size of 64x64 +pixels. However, the flag does not have to occupy all the space of the +bitmap, but it should be 64 pixels wide and only 42 pixels high, +centered. Please use as a reference the flags that are already in +the folder. + +After adding the flag, you must modify the +[static/skywire-manager-src/src/app/app.config.ts](/static/skywire-manager-src/src/app/app.config.ts) +file. In particular, you must add a new entry to the `languages` array, +with the data about the language. The object you must add is similar +to this: + +``` +{ + code: 'en', + name: 'English', + iconName: 'en.png' +} +``` + +The properties are: + +- `code`: 2 letter code that was assigned to the language. It must match +the name given to the translation file. + +- `name`: Name of the language. + +- `iconName`: Name of the file with the flag, which was added in the +previous step. + +Please use as a reference the data of the languages that have already +been added to the `languages` array. diff --git a/cmd/skywire-visor/static/assets/i18n/app1.png b/cmd/skywire-visor/static/assets/i18n/app1.png new file mode 100644 index 0000000000..67c75016e9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/i18n/app1.png differ diff --git a/cmd/skywire-visor/static/assets/i18n/app2.png b/cmd/skywire-visor/static/assets/i18n/app2.png new file mode 100644 index 0000000000..6cabfe6818 Binary files /dev/null and b/cmd/skywire-visor/static/assets/i18n/app2.png differ diff --git a/cmd/skywire-visor/static/assets/i18n/check.js b/cmd/skywire-visor/static/assets/i18n/check.js new file mode 100644 index 0000000000..b70f022d71 --- /dev/null +++ b/cmd/skywire-visor/static/assets/i18n/check.js @@ -0,0 +1,230 @@ +'use strict' + +const fs = require('fs'); + +///////////////////////////////////////////// +// Initial configuration +///////////////////////////////////////////// + +console.log('Starting to check the language files.', '\n'); + +// Load the current English file. +if (!fs.existsSync('en.json')) { + exitWithError('Unable to find the English language file.'); +} +let currentData = JSON.parse(fs.readFileSync('en.json', 'utf8')); + +// 2 charaters code of the languages that will be checked. +const langs = []; +// If false, the code will only verify the differences in the elements (ignoring its contents) of the +// base files and the files with the translations. If not, the code will also verify the differences +// in the elements and contents of the base files and the current English file. +let checkFull = false; + +// If a param was send, it must be "all" or the 2 charaters code of the language that must be checked. +// If a param is provided, checkFull is set to true. +if (process.argv.length > 2) { + if (process.argv.length > 3) { + exitWithError('Invalid number of parameters.'); + } + + if (process.argv[2] != 'all') { + if (process.argv[2].length !== 2) { + exitWithError('You can only send as parameter to this script the 2-letter code of one of the language files in this folder, or "all".'); + } + langs.push(process.argv[2]); + } + + checkFull = true; +} + +// If no language code was send as param, the code will check all languages. +if (langs.length === 0) { + let localFiles = fs.readdirSync('./'); + + const langFiles = []; + const langFilesMap = new Map(); + const baseLangFilesMap = new Map(); + localFiles.forEach(file => { + if (file.length === 12 && file.endsWith('_base.json')) { + langs.push(file.substring(0, 2)); + baseLangFilesMap.set(file.substring(0, 2), true); + } + if (file !== 'en.json' && file.length === 7 && file.endsWith('.json')) { + langFiles.push(file.substring(0, 2)); + langFilesMap.set(file.substring(0, 2), true); + } + }); + + langs.forEach(lang => { + if (!langFilesMap.has(lang)) { + exitWithError('The \"' + lang + '_base.json\" base file does not have its corresponding language file.'); + } + }); + + langFiles.forEach(lang => { + if (!baseLangFilesMap.has(lang)) { + exitWithError('The \"' + lang + '.json\" file does not have its corresponding base file.'); + } + }); + + if (langs.length === 0) { + exitWithError('No language files to check.'); + } +} + +console.log('Checking the following languages:'); +langs.forEach(lang => { + console.log(lang); +}); +console.log(''); + +///////////////////////////////////////////// +// Verifications +///////////////////////////////////////////// + +// The following arrays will contain the list of elements with problems. Each element of the +// arrays contains a "lang" property with the language identifier and a "elements" array with +// the path of the problematic elements. + +// Elements that are present in a base file but not in its corresponding translation file. +const baseFileOnly = []; +// Elements that are present in a translation file but not in its corresponding base file. +const translatedFileOnly = []; +// Elements that are present in the English file but not in the currently checked base translation file. +const enOnly = []; +// Elements that are present in the currently checked base translation file but not in the English file. +const translatedOnly = []; +// Elements that have different values in the currently checked base translation file and the English file. +const different = []; + +function addNewLangToArray(array, lang) { + array.push({ + lang: lang, + elements: [] + }); +} + +langs.forEach(lang => { + addNewLangToArray(baseFileOnly, lang); + addNewLangToArray(translatedFileOnly, lang); + addNewLangToArray(enOnly, lang); + addNewLangToArray(translatedOnly, lang); + addNewLangToArray(different, lang); + + // Try to load the translation file and its corresponding base file. + if (!fs.existsSync(lang + '.json')) { + exitWithError('Unable to find the ' + lang + '.json file.'); + } + let translationData = JSON.parse(fs.readFileSync(lang + '.json', 'utf8')); + + if (!fs.existsSync(lang + '_base.json')) { + exitWithError('Unable to find the ' + lang + '_base.json language file.'); + } + let baseTranslationData = JSON.parse(fs.readFileSync(lang + '_base.json', 'utf8')); + + // Check the differences in the elements of the translation file and its base file. + checkElement('', '', baseTranslationData, translationData, baseFileOnly, true); + checkElement('', '', translationData, baseTranslationData, translatedFileOnly, true); + + // Check the differences in the elements and content of the base translation file the English file. + if (checkFull) { + checkElement('', '', currentData, baseTranslationData, enOnly, false); + checkElement('', '', baseTranslationData, currentData, translatedOnly, true); + } +}); + + +// Check recursively if the elements and content of two language objects are the same. +// +// path: path of the currently checked element. As this function works with nested elements, +// the path is the name of all the parents, separated by a dot. +// key: name of the current element. +// fist: first element for the comparation. +// second: second element for the comparation. +// arrayForMissingElements: array in which the list of "fist" elements that are not in "second" +// will be added. +// ignoreDifferences: if false, each time the content of an element in "fist" is different to the +// same element in "second" that element will be added to the "different" array. +function checkElement(path, key, fist, second, arrayForMissingElements, ignoreDifferences) { + let pathPrefix = ''; + if (path.length > 0) { + pathPrefix = '.'; + } + + // This means that, at some point, the code found an element in the "first" branch that is + // not in the "second" branch. + if (second === undefined || second === null) { + arrayForMissingElements[arrayForMissingElements.length - 1].elements.push(path + pathPrefix + key); + return; + } + + if (typeof fist !== 'object') { + // If the current element is a string, compare the contents, but ony if ignoreDifferences + // is true. + if (!ignoreDifferences && fist != second) { + different[different.length - 1].elements.push(path + pathPrefix + key); + } + } else { + // If the current element is an object, check the childs. + Object.keys(fist).forEach(currentKey => { + checkElement(path + pathPrefix + key, currentKey, fist[currentKey], second[currentKey], arrayForMissingElements, ignoreDifferences); + }); + } +} + +///////////////////////////////////////////// +// Results processing +///////////////////////////////////////////// + +// Becomes true if any of the verifications failed. +let failedValidation = false; + +// If "failedValidation" is false, writes to the console the header of the error list +// and updates the value of "failedValidation" to true. +function updateErrorSumary() { + if (!failedValidation) { + failedValidation = true; + console.log('The following problems were found:', '\n'); + } +} + +// Checks all arrays for errors. This loop is for the languages. +for (let i = 0; i < baseFileOnly.length; i++) { + + // This loop if for checking all the arrays. + [baseFileOnly, translatedFileOnly, enOnly, translatedOnly, different].forEach((array, idx) => { + // If the array has elements, it means that errors were found. + if (array[i].elements.length > 0) { + updateErrorSumary(); + + // Show the appropriate error text according to the current array. + if (idx === 0) { + console.log('The \"' + baseFileOnly[i].lang + '_base.json\" base file has elements that are not present in \"' + baseFileOnly[i].lang + '.json\":'); + } else if (idx === 1) { + console.log("\"" + translatedFileOnly[i].lang + '.json\" has elements that are not present in the \"' + baseFileOnly[i].lang + '_base.json\" base file:'); + } else if (idx === 2) { + console.log('The \"en.json\" file has elements that are not present in the \"' + enOnly[i].lang + '_base.json\" base file:'); + } else if (idx === 3) { + console.log('The \"' + translatedOnly[i].lang + '_base.json\" base file has elements that are not present in \"en.json\":'); + } else if (idx === 4) { + console.log('The \"' + different[i].lang + '_base.json\" base file has values that do not match the ones in \"en.json\":'); + } + // Show all the elements with errors. + array[i].elements.forEach(element => console.log(element)); + console.log(''); + } + }); +} + +// If no error was detected, show a success message on the console. If not, exit with an error code. +if (!failedValidation) { + console.log('The verification passed without problems.'); +} else { + process.exit(1); +} + +function exitWithError(errorMessage) { + console.log('Error: ' + errorMessage) + process.exit(1); +} diff --git a/cmd/skywire-visor/static/assets/i18n/de.json b/cmd/skywire-visor/static/assets/i18n/de.json new file mode 100644 index 0000000000..6e066517fb --- /dev/null +++ b/cmd/skywire-visor/static/assets/i18n/de.json @@ -0,0 +1,437 @@ +{ + "common": { + "save": "Speichern", + "edit": "Ändern", + "cancel": "Abbrechen", + "node-key": "Visor Schlüssel", + "app-key": "Anwendungs-Schlüssel", + "discovery": "Discovery", + "downloaded": "Heruntergeladen", + "uploaded": "Hochgeladen", + "delete": "Löschen", + "none": "Nichts", + "loading-error": "Beim Laden der Daten ist ein Fehler aufgetreten. Versuche es erneut...", + "operation-error": "Beim Ausführen der Aktion ist ein Fehler aufgetreten.", + "no-connection-error": "Es ist keine Internetverbindung oder Verbindung zum Hypervisor vorhanden.", + "error": "Fehler:", + "refreshed": "Daten aktualisiert.", + "options": "Optionen", + "logout": "Abmelden", + "logout-error": "Fehler beim Abmelden." + }, + + "tables": { + "title": "Ordnen nach", + "sorting-title": "Geordnet nach:", + "ascending-order": "(aufsteigend)", + "descending-order": "(absteigend)" + }, + + "inputs": { + "errors": { + "key-required": "Schlüssel wird benötigt.", + "key-length": "Schlüssel muss 66 Zeichen lang sein." + } + }, + + "start": { + "title": "Start" + }, + + "node": { + "title": "Visor Details", + "not-found": "Visor nicht gefunden.", + "statuses": { + "online": "Online", + "online-tooltip": "Visor ist online", + "offline": "Offline", + "offline-tooltip": "Visor ist offline" + }, + "details": { + "node-info": { + "title": "Visor Info", + "label": "Bezeichnung:", + "public-key": "Öffentlicher Schlüssel:", + "port": "Port:", + "node-version": "Visor Version:", + "app-protocol-version": "Anwendungsprotokollversion:", + "time": { + "title": "Online seit:", + "seconds": "ein paar Sekunden", + "minute": "1 Minute", + "minutes": "{{ time }} Minuten", + "hour": "1 Stunde", + "hours": "{{ time }} Stunden", + "day": "1 Tag", + "days": "{{ time }} Tage", + "week": "1 Woche", + "weeks": "{{ time }} Wochen" + } + }, + "node-health": { + "title": "Zustand Info", + "status": "Status:", + "transport-discovery": "Transport Entdeckung:", + "route-finder": "Route Finder:", + "setup-node": "Setup Visor:", + "uptime-tracker": "Verfügbarkeitsmonitor:", + "address-resolver": "Addressauflöser:", + "element-offline": "offline" + }, + "node-traffic-data": "Datenverkehr" + }, + "tabs": { + "info": "Info", + "apps": "Anwendungen", + "routing": "Routing" + }, + "error-load": "Beim Aktualisieren der Visordaten ist ein Fehler aufgetreten." + }, + + "nodes": { + "title": "Visor Liste", + "state": "Status", + "label": "Bezeichnung", + "key": "Schlüssel", + "view-node": "Visor betrachten", + "delete-node": "Visor löschen", + "error-load": "Beim Aktualisieren der Visor-Liste ist ein Fehler aufgetreten.", + "empty": "Es ist kein Visor zu diesem Hypervisor verbunden.", + "delete-node-confirmation": "Visor wirklich von der Liste löschen?", + "deleted": "Visor gelöscht." + }, + + "edit-label": { + "title": "Bezeichnung ändern", + "label": "Bezeichnung", + "done": "Bezeichnung gespeichert.", + "default-label-warning": "Die Standardbezeichnung wurde verwendet." + }, + + "settings": { + "title": "Einstellungen", + "password" : { + "initial-config-help": "Diese Option wird verwendet, um das erste Passwort festzulegen. Nachdem ein Passwort festgelegt wurde, ist es nicht möglich dieses, mit dieser Option zu ändern.", + "help": "Optionen um das Passwort zu ändern.", + "old-password": "Altes Passwort", + "new-password": "Neues Passwort", + "repeat-password": "Neues Passwort wiederholen", + "password-changed": "Passwort wurde geändert.", + "error-changing": "Fehler beim Ändern des Passworts aufgetreten.", + "initial-config": { + "title": "Erstes Passwort festlegen", + "password": "Passwort", + "repeat-password": "Passwort wiederholen", + "set-password": "Passwort ändern", + "done": "Passwort wurde geändert.", + "error": "Fehler. Es scheint ein erstes Passwort wurde schon gewählt." + }, + "errors": { + "bad-old-password": "Altes Passwort falsch", + "old-password-required": "Altes Passwort wird benötigt", + "new-password-error": "Passwort muss 6-64 Zeichen lang sein.", + "passwords-not-match": "Passwörter stimmen nicht überein.", + "default-password": "Das Standardpasswort darf nicht verwendet werden (1234)." + } + }, + "change-password": "Passwort ändern", + "refresh-rate": "Aktualisierungsintervall", + "refresh-rate-help": "Zeit, bis das System die Daten automatisch aktualisiert.", + "refresh-rate-confirmation": "Aktualisierungsintervall geändert.", + "seconds": "Sekunden" + }, + + "login": { + "password": "Passwort", + "incorrect-password": "Falsches Passwort.", + "initial-config": "Erste Konfiguration" + }, + + "actions": { + "menu": { + "terminal": "Terminal", + "config": "Konfiguration", + "update": "Aktualisieren", + "reboot": "Neustart" + }, + "reboot": { + "confirmation": "Den Visor wirklich neustarten?", + "done": "Der Visor wird neu gestartet." + }, + "config": { + "title": "Discovery Konfiguration", + "header": "Discovery Addresse", + "remove": "Addresse entfernen", + "add": "Addresse hinzufügen", + "cant-store": "Konfiguration kann nicht gespeichert werden.", + "success": "Discovery Konfiguration wird durch Neustart angewendet." + }, + "terminal-options": { + "full": "Terminal", + "simple": "Einfaches Terminal" + }, + "terminal": { + "title": "Terminal", + "input-start": "Skywire Terminal für {{address}}", + "error": "Bei der Ausführung des Befehls ist ein Fehler aufgetreten." + }, + "update": { + "title": "Update", + "processing": "Suche nach Updates...", + "processing-button": "Bitte warten", + "no-update": "Kein Update vorhanden.
      Installierte Version: {{ version }}.", + "update-available": "Es ist ein Update möglich.
      Installierte Version: {{ currentVersion }}
      Neue Version: {{ newVersion }}.", + "done": "Ein Update für den Visor wird installiert.", + "update-error": "Update konnte nicht installiert werden.", + "install": "Update installieren" + } + }, + + "apps": { + "socksc": { + "title": "Mit Visor verbinden", + "connect-keypair": "Schlüsselpaar eingeben", + "connect-search": "Visor suchen", + "connect-history": "Verlauf", + "versions": "Versionen", + "location": "Standort", + "connect": "Verbinden", + "next-page": "Nächste Seite", + "prev-page": "Vorherige Seite", + "auto-startup": "Automatisch mit Visor verbinden" + }, + "sshc": { + "title": "SSH Client", + "connect": "Verbinde mit SSH Server", + "auto-startup": "Starte SSH client automatisch", + "connect-keypair": "Schlüsselpaar eingeben", + "connect-history": "Verlauf" + }, + "sshs": { + "title": "SSH-Server", + "whitelist": { + "title": "SSH-Server Whitelist", + "header": "Schlüssel", + "add": "Zu Liste hinzufügen", + "remove": "Schlüssel entfernen", + "enter-key": "Node Schlüssel eingeben", + "errors": { + "cant-save": "Änderungen an der Whitelist konnten nicht gespeichert werden." + }, + "saved-correctly": "Änderungen an der Whitelist gespeichert" + }, + "auto-startup": "Starte SSH-Server automatisch" + }, + "log": { + "title": "Log", + "empty": "Im ausgewählten Intervall sind keine Logs vorhanden", + "filter-button": "Log-Intervall:", + "filter": { + "title": "Filter", + "filter": "Zeige generierte Logs", + "7-days": "der letzten 7 Tagen", + "1-month": "der letzten 30 Tagen", + "3-months": "der letzten 3 Monaten", + "6-months": "der letzten 6 Monaten", + "1-year": "des letzten Jahres", + "all": "Zeige alle" + } + }, + "config": { + "title": "Startup Konfiguration" + }, + "menu": { + "startup-config": "Startup Konfiguration", + "log": "Log Nachrichten", + "whitelist": "Whitelist" + }, + "apps-list": { + "title": "Anwendungen", + "list-title": "Anwendungsliste", + "app-name": "Name", + "port": "Port", + "status": "Status", + "auto-start": "Auto-Start", + "empty": "Visor hat keine Anwendungen.", + "disable-autostart": "Autostart ausschalten", + "enable-autostart": "Autostart einschalten", + "autostart-disabled": "Autostart aus", + "autostart-enabled": "Autostart ein" + }, + "skysocks-settings": { + "title": "Skysocks Einstellungen", + "new-password": "Neues Passwort (Um Passwort zu entfernen leer lassen)", + "repeat-password": "Passwort wiederholen", + "passwords-not-match": "Passwörter stimmen nicht überein.", + "save": "Speichern", + "remove-passowrd-confirmation": "Kein Passwort eingegeben. Wirklich Passwort entfernen?", + "change-passowrd-confirmation": "Passwort wirklich ändern?", + "changes-made": "Änderungen wurden gespeichert." + }, + "skysocks-client-settings": { + "title": "Skysocks-Client Einstellungen", + "remote-visor-tab": "Remote Visor", + "history-tab": "Verlauf", + "public-key": "Remote Visor öffentlicher Schlüssel", + "remote-key-length-error": "Der öffentliche Schlüssel muss 66 Zeichen lang sein.", + "remote-key-chars-error": "Der öffentliche Schlüssel darf nur hexadezimale Zeichen enthalten.", + "save": "Speichern", + "change-key-confirmation": "Wirklich den öffentlichen Schlüssel des Remote Visors ändern?", + "changes-made": "Änderungen wurden gespeichert.", + "no-history": "Dieser Tab zeigt die letzten {{ number }} öffentlichen Schlüssel, die benutzt wurden." + }, + "stop-app": "Stopp", + "start-app": "Start", + "view-logs": "Zeige Logs", + "settings": "Einstellungen", + "error": "Ein Fehler ist aufgetreten.", + "stop-confirmation": "Anwendung wirklich anhalten?", + "stop-selected-confirmation": "Ausgewählte Anwendung wirklich anhalten?", + "disable-autostart-confirmation": "Auto-Start für diese Anwendung wirklich ausschalten?", + "enable-autostart-confirmation": "Auto-Start für diese Anwendung wirklich einschalten?", + "disable-autostart-selected-confirmation": "Auto-Start für ausgewählte Anwendungen wirklich ausschalten?", + "enable-autostart-selected-confirmation": "Auto-Start für ausgewählte Anwendungen wirklich einschalten", + "operation-completed": "Operation ausgeführt", + "operation-unnecessary": "Gewünschte Einstellungen schon aktiv.", + "status-running": "Läuft", + "status-stopped": "Gestoppt", + "status-failed": "Fehler", + "status-running-tooltip": "Anwendung läuft", + "status-stopped-tooltip": "Anwendung gestoppt", + "status-failed-tooltip": "Ein Fehler ist aufgetreten. Log der Anwendung überprüfen." + }, + + "transports": { + "title": "Transporte", + "list-title": "Transport-Liste", + "id": "ID", + "remote-node": "Remote", + "type": "Typ", + "create": "Transport erstellen", + "delete-confirmation": "Transport wirklich entfernen?", + "delete-selected-confirmation": "Ausgewählte Transporte wirklich entfernen?", + "delete": "Transport entfernen", + "deleted": "Transport erfolgreich entfernt.", + "empty": "Visor hat keine Transporte.", + "details": { + "title": "Details", + "basic": { + "title": "Basis Info", + "id": "ID:", + "local-pk": "Lokaler öffentlicher Schlüssel:", + "remote-pk": "Remote öffentlicher Schlüssel:", + "type": "Typ:" + }, + "data": { + "title": "Datenübertragung", + "uploaded": "Hochgeladen:", + "downloaded": "Heruntergeladen:" + } + }, + "dialog": { + "remote-key": "Remote öffentlicher Schlüssel:", + "transport-type": "Transport-Typ", + "success": "Transport erstellt.", + "errors": { + "remote-key-length-error": "Der remote öffentliche Schlüssel muss 66 Zeichen lang sein.", + "remote-key-chars-error": "Der remote öffentliche Schlüssel darf nur hexadezimale Zeichen enthalten.", + "transport-type-error": "Ein Transport-Typ wird benötigt." + } + } + }, + + "routes": { + "title": "Routen", + "list-title": "Routen-Liste", + "key": "Schlüssel", + "rule": "Regel", + "delete-confirmation": "Diese Route wirklich entfernen?", + "delete-selected-confirmation": "Ausgewählte Routen wirklich entfernen?", + "delete": "Route entfernen", + "deleted": "Route erfolgreich entfernt.", + "empty": "Visor hat keine Routen.", + "details": { + "title": "Details", + "basic": { + "title": "Basis Info", + "key": "Schlüssel:", + "rule": "Regel:" + }, + "summary": { + "title": "Regel Zusammenfassung", + "keep-alive": "Keep alive:", + "type": "Typ:", + "key-route-id": "Schlüssel-Route ID:" + }, + "specific-fields-titles": { + "app": "Anwendung", + "forward": "Weiterleitung", + "intermediary-forward": "Vermittelte Weiterleitung" + }, + "specific-fields": { + "route-id": "Nächste Routen ID:", + "transport-id": "Nächste Transport ID:", + "destination-pk": "Ziel öffentlicher Schlüssel:", + "source-pk": "Quelle öffentlicher Schlüssel:", + "destination-port": "Ziel Port:", + "source-port": "Quelle Port:" + } + } + }, + + "copy": { + "tooltip": "In Zwischenablage kopieren", + "tooltip-with-text": "{{ text }} (In Zwischenablage kopieren)", + "copied": "In Zwischenablage kopiert!" + }, + + "selection": { + "select-all": "Alle auswählen", + "unselect-all": "Alle abwählen", + "delete-all": "Alle ausgewählten Elemente entfernen", + "start-all": "Starte ausgewählte Anwendung", + "stop-all": "Stoppe ausgewählte Anwendung", + "enable-autostart-all": "Auto-Start für ausgewählte Anwendungen einschalten", + "disable-autostart-all": "Auto-Start für ausgewählte Anwendungen ausschalten" + }, + + "refresh-button": { + "seconds": "Kürzlich aktualisiert", + "minute": "Vor einer Minute aktualisiert", + "minutes": "Vor {{ time }} Minuten aktualisiert", + "hour": "Vor einer Stunde aktualisiert", + "hours": "Vor {{ time }} Stunden aktualisert", + "day": "Vor einem Tag aktualisiert", + "days": "Vor {{ time }} Tagen aktualisert", + "week": "Vor einer Woche aktualisiert", + "weeks": "Vor {{ time }} Wochen aktualisert", + "error-tooltip": "Fehler beim Aktualiseren aufgetreten. Versuche erneut alle {{ time }} Sekunden..." + }, + + "view-all-link": { + "label": "Zeige alle {{ number }} Elemente" + }, + + "paginator": { + "first": "Erste", + "last": "Letzte", + "total": "Insgesamt: {{ number }} Seiten", + "select-page-title": "Seite auswählen" + }, + + "confirmation" : { + "header-text": "Bestätigung", + "confirm-button": "Ja", + "cancel-button": "Nein", + "close": "Schließen", + "error-header-text": "Fehler" + }, + + "language" : { + "title": "Sprache auswählen" + }, + + "tabs-window" : { + "title" : "Tab wechseln" + } +} diff --git a/cmd/skywire-visor/static/assets/i18n/de_base.json b/cmd/skywire-visor/static/assets/i18n/de_base.json new file mode 100644 index 0000000000..c38c0e826e --- /dev/null +++ b/cmd/skywire-visor/static/assets/i18n/de_base.json @@ -0,0 +1,437 @@ +{ + "common": { + "save": "Save", + "edit": "Edit", + "cancel": "Cancel", + "node-key": "Node Key", + "app-key": "App Key", + "discovery": "Discovery", + "downloaded": "Downloaded", + "uploaded": "Uploaded", + "delete": "Delete", + "none": "None", + "loading-error": "There was an error getting the data. Retrying...", + "operation-error": "There was an error trying to complete the operation.", + "no-connection-error": "There is no internet connection or connection to the Hypervisor.", + "error": "Error:", + "refreshed": "Data refreshed.", + "options": "Options", + "logout": "Logout", + "logout-error": "Error logging out." + }, + + "tables": { + "title": "Order by", + "sorting-title": "Ordered by:", + "ascending-order": "(ascending)", + "descending-order": "(descending)" + }, + + "inputs": { + "errors": { + "key-required": "Key is required.", + "key-length": "Key must be 66 characters long." + } + }, + + "start": { + "title": "Start" + }, + + "node": { + "title": "Visor details", + "not-found": "Visor not found.", + "statuses": { + "online": "Online", + "online-tooltip": "Visor is online", + "offline": "Offline", + "offline-tooltip": "Visor is offline" + }, + "details": { + "node-info": { + "title": "Visor Info", + "label": "Label:", + "public-key": "Public key:", + "port": "Port:", + "node-version": "Visor version:", + "app-protocol-version": "App protocol version:", + "time": { + "title": "Time online:", + "seconds": "a few seconds", + "minute": "1 minute", + "minutes": "{{ time }} minutes", + "hour": "1 hour", + "hours": "{{ time }} hours", + "day": "1 day", + "days": "{{ time }} days", + "week": "1 week", + "weeks": "{{ time }} weeks" + } + }, + "node-health": { + "title": "Health info", + "status": "Status:", + "transport-discovery": "Transport discovery:", + "route-finder": "Route finder:", + "setup-node": "Setup node:", + "uptime-tracker": "Uptime tracker:", + "address-resolver": "Address resolver:", + "element-offline": "offline" + }, + "node-traffic-data": "Traffic data" + }, + "tabs": { + "info": "Info", + "apps": "Apps", + "routing": "Routing" + }, + "error-load": "An error occurred while refreshing the data. Retrying..." + }, + + "nodes": { + "title": "Visor list", + "state": "State", + "label": "Label", + "key": "Key", + "view-node": "View visor", + "delete-node": "Remove visor", + "error-load": "An error occurred while refreshing the list. Retrying...", + "empty": "There aren't any visors connected to this hypervisor.", + "delete-node-confirmation": "Are you sure you want to remove the visor from the list?", + "deleted": "Visor removed." + }, + + "edit-label": { + "title": "Edit label", + "label": "Label", + "done": "Label saved.", + "default-label-warning": "The default label has been used." + }, + + "settings": { + "title": "Settings", + "password" : { + "initial-config-help": "Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.", + "help": "Options for changing your password.", + "old-password": "Old password", + "new-password": "New password", + "repeat-password": "Repeat password", + "password-changed": "Password changed.", + "error-changing": "Error changing password.", + "initial-config": { + "title": "Set initial password", + "password": "Password", + "repeat-password": "Repeat password", + "set-password": "Set password", + "done": "Password set. Please use it to access the system.", + "error": "Error. Please make sure you have not already set the password." + }, + "errors": { + "bad-old-password": "The provided old password is not correct.", + "old-password-required": "Old password is required.", + "new-password-error": "Password must be 6-64 characters long.", + "passwords-not-match": "Passwords do not match.", + "default-password": "Don't use the default password (1234)." + } + }, + "change-password": "Change password", + "refresh-rate": "Refresh rate", + "refresh-rate-help": "Time the system waits to update the data automatically.", + "refresh-rate-confirmation": "Refresh rate changed.", + "seconds": "seconds" + }, + + "login": { + "password": "Password", + "incorrect-password": "Incorrect password.", + "initial-config": "Configure initial launch" + }, + + "actions": { + "menu": { + "terminal": "Terminal", + "config": "Configuration", + "update": "Update", + "reboot": "Reboot" + }, + "reboot": { + "confirmation": "Are you sure you want to reboot the visor?", + "done": "The visor is restarting." + }, + "config": { + "title": "Discovery configuration", + "header": "Discovery address", + "remove": "Remove address", + "add": "Add address", + "cant-store": "Unable to store node configuration.", + "success": "Applying discovery configuration by restarting node process." + }, + "terminal-options": { + "full": "Full terminal", + "simple": "Simple terminal" + }, + "terminal": { + "title": "Terminal", + "input-start": "Skywire terminal for {{address}}", + "error": "Unexpected error while trying to execute the command." + }, + "update": { + "title": "Update", + "processing": "Looking for updates...", + "processing-button": "Please wait", + "no-update": "Currently, there is no update for the visor. The currently installed version is {{ version }}.", + "update-available": "There is an update available for the visor. Click the 'Install update' button to continue. The currently installed version is {{ currentVersion }} and the new version is {{ newVersion }}.", + "done": "The visor is updated.", + "update-error": "Could not install the update. Please, try again later.", + "install": "Install update" + } + }, + + "apps": { + "socksc": { + "title": "Connect to Node", + "connect-keypair": "Enter keypair", + "connect-search": "Search node", + "connect-history": "History", + "versions": "Versions", + "location": "Location", + "connect": "Connect", + "next-page": "Next page", + "prev-page": "Previous page", + "auto-startup": "Automatically connect to Node" + }, + "sshc": { + "title": "SSH Client", + "connect": "Connect to SSH Server", + "auto-startup": "Automatically start SSH client", + "connect-keypair": "Enter keypair", + "connect-history": "History" + }, + "sshs": { + "title": "SSH Server", + "whitelist": { + "title": "SSH Server Whitelist", + "header": "Key", + "add": "Add to list", + "remove": "Remove key", + "enter-key": "Enter node key", + "errors": { + "cant-save": "Could not save whitelist changes." + }, + "saved-correctly": "Whitelist changes saved successfully." + }, + "auto-startup": "Automatically start SSH server" + }, + "log": { + "title": "Log", + "empty": "There are no log messages for the selected time range.", + "filter-button": "Only showing logs generated since:", + "filter": { + "title": "Filter", + "filter": "Only show logs generated since", + "7-days": "The last 7 days", + "1-month": "The last 30 days", + "3-months": "The last 3 months", + "6-months": "The last 6 months", + "1-year": "The last year", + "all": "Show all" + } + }, + "config": { + "title": "Startup configuration" + }, + "menu": { + "startup-config": "Startup configuration", + "log": "Log messages", + "whitelist": "Whitelist" + }, + "apps-list": { + "title": "Applications", + "list-title": "Application list", + "app-name": "Name", + "port": "Port", + "status": "Status", + "auto-start": "Auto start", + "empty": "Visor doesn't have any applications.", + "disable-autostart": "Disable autostart", + "enable-autostart": "Enable autostart", + "autostart-disabled": "Autostart disabled", + "autostart-enabled": "Autostart enabled" + }, + "skysocks-settings": { + "title": "Skysocks Settings", + "new-password": "New password (Leave empty to remove the password)", + "repeat-password": "Repeat password", + "passwords-not-match": "Passwords do not match.", + "save": "Save", + "remove-passowrd-confirmation": "You left the password field empty. Are you sure you want to remove the password?", + "change-passowrd-confirmation": "Are you sure you want to change the password?", + "changes-made": "The changes have been made." + }, + "skysocks-client-settings": { + "title": "Skysocks-Client Settings", + "remote-visor-tab": "Remote Visor", + "history-tab": "History", + "public-key": "Remote visor public key", + "remote-key-length-error": "The public key must be 66 characters long.", + "remote-key-chars-error": "The public key must only contain hexadecimal characters.", + "save": "Save", + "change-key-confirmation": "Are you sure you want to change the remote visor public key?", + "changes-made": "The changes have been made.", + "no-history": "This tab will show the last {{ number }} public keys used." + }, + "stop-app": "Stop", + "start-app": "Start", + "view-logs": "View logs", + "settings": "Settings", + "error": "An error has occured and it was not possible to perform the operation.", + "stop-confirmation": "Are you sure you want to stop the app?", + "stop-selected-confirmation": "Are you sure you want to stop the selected apps?", + "disable-autostart-confirmation": "Are you sure you want to disable autostart for the app?", + "enable-autostart-confirmation": "Are you sure you want to enable autostart for the app?", + "disable-autostart-selected-confirmation": "Are you sure you want to disable autostart for the selected apps?", + "enable-autostart-selected-confirmation": "Are you sure you want to enable autostart for the selected apps?", + "operation-completed": "Operation completed.", + "operation-unnecessary": "The selection already has the requested setting.", + "status-running": "Running", + "status-stopped": "Stopped", + "status-failed": "Failed", + "status-running-tooltip": "App is currently running", + "status-stopped-tooltip": "App is currently stopped", + "status-failed-tooltip": "Something went wrong. Check the app's messages for more information" + }, + + "transports": { + "title": "Transports", + "list-title": "Transport list", + "id": "ID", + "remote-node": "Remote", + "type": "Type", + "create": "Create transport", + "delete-confirmation": "Are you sure you want to delete the transport?", + "delete-selected-confirmation": "Are you sure you want to delete the selected transports?", + "delete": "Delete transport", + "deleted": "Delete operation completed.", + "empty": "Visor doesn't have any transports.", + "details": { + "title": "Details", + "basic": { + "title": "Basic info", + "id": "ID:", + "local-pk": "Local public key:", + "remote-pk": "Remote public key:", + "type": "Type:" + }, + "data": { + "title": "Data transmission", + "uploaded": "Uploaded data:", + "downloaded": "Downloaded data:" + } + }, + "dialog": { + "remote-key": "Remote public key", + "transport-type": "Transport type", + "success": "Transport created.", + "errors": { + "remote-key-length-error": "The remote public key must be 66 characters long.", + "remote-key-chars-error": "The remote public key must only contain hexadecimal characters.", + "transport-type-error": "The transport type is required." + } + } + }, + + "routes": { + "title": "Routes", + "list-title": "Route list", + "key": "Key", + "rule": "Rule", + "delete-confirmation": "Are you sure you want to delete the route?", + "delete-selected-confirmation": "Are you sure you want to delete the selected routes?", + "delete": "Delete route", + "deleted": "Delete operation completed.", + "empty": "Visor doesn't have any routes.", + "details": { + "title": "Details", + "basic": { + "title": "Basic info", + "key": "Key:", + "rule": "Rule:" + }, + "summary": { + "title": "Rule summary", + "keep-alive": "Keep alive:", + "type": "Rule type:", + "key-route-id": "Key route ID:" + }, + "specific-fields-titles": { + "app": "App fields", + "forward": "Forward fields", + "intermediary-forward": "Intermediary forward fields" + }, + "specific-fields": { + "route-id": "Next route ID:", + "transport-id": "Next transport ID:", + "destination-pk": "Destination public key:", + "source-pk": "Source public key:", + "destination-port": "Destination port:", + "source-port": "Source port:" + } + } + }, + + "copy": { + "tooltip": "Click to copy", + "tooltip-with-text": "{{ text }} (Click to copy)", + "copied": "Copied!" + }, + + "selection": { + "select-all": "Select all", + "unselect-all": "Unselect all", + "delete-all": "Delete all selected elements", + "start-all": "Start all selected apps", + "stop-all": "Stop all selected apps", + "enable-autostart-all": "Enable autostart for all selected apps", + "disable-autostart-all": "Disable autostart for all selected apps" + }, + + "refresh-button": { + "seconds": "Updated a few seconds ago", + "minute": "Updated 1 minute ago", + "minutes": "Updated {{ time }} minutes ago", + "hour": "Updated 1 hour ago", + "hours": "Updated {{ time }} hours ago", + "day": "Updated 1 day ago", + "days": "Updated {{ time }} days ago", + "week": "Updated 1 week ago", + "weeks": "Updated {{ time }} weeks ago", + "error-tooltip": "There was an error updating the data. Retrying automatically every {{ time }} seconds..." + }, + + "view-all-link": { + "label": "View all {{ number }} elements" + }, + + "paginator": { + "first": "First", + "last": "Last", + "total": "Total: {{ number }} pages", + "select-page-title": "Select page" + }, + + "confirmation" : { + "header-text": "Confirmation", + "confirm-button": "Yes", + "cancel-button": "No", + "close": "Close", + "error-header-text": "Error" + }, + + "language" : { + "title": "Select language" + }, + + "tabs-window" : { + "title" : "Change tab" + } +} diff --git a/cmd/skywire-visor/static/assets/i18n/en.json b/cmd/skywire-visor/static/assets/i18n/en.json new file mode 100644 index 0000000000..d274ee959e --- /dev/null +++ b/cmd/skywire-visor/static/assets/i18n/en.json @@ -0,0 +1,603 @@ +{ + "common": { + "save": "Save", + "cancel": "Cancel", + "downloaded": "Downloaded", + "uploaded": "Uploaded", + "loading-error": "There was an error getting the data. Retrying...", + "operation-error": "There was an error trying to complete the operation.", + "no-connection-error": "There is no internet connection or connection to the Hypervisor.", + "error": "Error:", + "refreshed": "Data refreshed.", + "options": "Options", + "logout": "Logout", + "logout-error": "Error logging out.", + "logout-confirmation": "Are you sure you want to log out?", + "time-in-ms": "{{ time }}ms", + "ok": "Ok", + "unknown": "Unknown", + "close": "Close" + }, + + "labeled-element": { + "edit-label": "Edit label", + "remove-label": "Remove label", + "copy": "Copy", + "remove-label-confirmation": "Do you really want to remove the label?", + "unnamed-element": "Unnamed", + "unnamed-local-visor": "Local visor", + "local-element": "Local", + "tooltip": "Click to copy the entry or change the label", + "tooltip-with-text": "{{ text }} (Click to copy the entry or change the label)" + }, + + "labels": { + "title": "Labels", + "info": "Labels you have entered to easily identify visors, transports and other elements, instead of having to read machine generated identifiers.", + "list-title": "Label list", + "label": "Label", + "id": "Element ID", + "type": "Type", + "delete-confirmation": "Are you sure you want to delete the label?", + "delete-selected-confirmation": "Are you sure you want to delete the selected labels?", + "delete": "Delete label", + "deleted": "Delete operation completed.", + "empty": "There aren't any saved labels.", + "empty-with-filter": "No label matches the selected filtering criteria.", + "filter-dialog": { + "label": "The label must contain", + "id": "The id must contain", + "type": "The type must be", + + "type-options": { + "any": "Any", + "visor": "Visor", + "dmsg-server": "DMSG server", + "transport": "Transport" + } + } + }, + + "filters": { + "filter-action": "Filter", + "press-to-remove": "(Press to remove the filters)", + "remove-confirmation": "Are you sure you want to remove the filters?" + }, + + "tables": { + "title": "Order by", + "sorting-title": "Ordered by:", + "sort-by-value": "Value", + "sort-by-label": "Label", + "label": "(label)", + "inverted-order": "(inverted)" + }, + + "start": { + "title": "Start" + }, + + "node": { + "title": "Visor details", + "not-found": "Visor not found.", + "statuses": { + "online": "Online", + "online-tooltip": "Visor is online.", + "partially-online": "Online with problems", + "partially-online-tooltip": "Visor is online but not all services are working. For more information, open the details page and check the \"Health info\" section.", + "offline": "Offline", + "offline-tooltip": "Visor is offline." + }, + "details": { + "node-info": { + "title": "Visor Info", + "label": "Label:", + "public-key": "Public key:", + "port": "Port:", + "dmsg-server": "DMSG server:", + "ping": "Ping:", + "node-version": "Visor version:", + "time": { + "title": "Time online:", + "seconds": "a few seconds", + "minute": "1 minute", + "minutes": "{{ time }} minutes", + "hour": "1 hour", + "hours": "{{ time }} hours", + "day": "1 day", + "days": "{{ time }} days", + "week": "1 week", + "weeks": "{{ time }} weeks" + } + }, + "node-health": { + "title": "Health info", + "status": "Status:", + "transport-discovery": "Transport discovery:", + "route-finder": "Route finder:", + "setup-node": "Setup node:", + "uptime-tracker": "Uptime tracker:", + "address-resolver": "Address resolver:", + "element-offline": "Offline" + }, + "node-traffic-data": "Traffic data" + }, + "tabs": { + "info": "Info", + "apps": "Apps", + "routing": "Routing" + }, + "error-load": "An error occurred while refreshing the data. Retrying..." + }, + + "nodes": { + "title": "Visor list", + "dmsg-title": "DMSG", + "update-all": "Update all visors", + "hypervisor": "Hypervisor", + "state": "State", + "state-tooltip": "Current state", + "label": "Label", + "key": "Key", + "dmsg-server": "DMSG server", + "ping": "Ping", + "hypervisor-info": "This visor is the current Hypervisor.", + "copy-key": "Copy key", + "copy-dmsg": "Copy DMSG server key", + "copy-data": "Copy data", + "view-node": "View visor", + "delete-node": "Remove visor", + "delete-all-offline": "Remove all offline visors", + "error-load": "An error occurred while refreshing the list. Retrying...", + "empty": "There aren't any visors connected to this hypervisor.", + "empty-with-filter": "No visor matches the selected filtering criteria.", + "delete-node-confirmation": "Are you sure you want to remove the visor from the list?", + "delete-all-offline-confirmation": "Are you sure you want to remove all offline visors from the list?", + "delete-all-filtered-offline-confirmation": "All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?", + "deleted": "Visor removed.", + "deleted-singular": "1 offline visor removed.", + "deleted-plural": "{{ number }} offline visors removed.", + "no-visors-to-update": "There are no visors to update.", + "filter-dialog": { + "online": "The visor must be", + "label": "The label must contain", + "key": "The public key must contain", + "dmsg": "The DMSG server key must contain", + + "online-options": { + "any": "Online or offline", + "online": "Online", + "offline": "Offline" + } + } + }, + + "edit-label": { + "label": "Label", + "done": "Label saved.", + "label-removed-warning": "The label was removed." + }, + + "settings": { + "title": "Settings", + "password" : { + "initial-config-help": "Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.", + "help": "Options for changing your password.", + "old-password": "Old password", + "new-password": "New password", + "repeat-password": "Repeat password", + "password-changed": "Password changed.", + "error-changing": "Error changing password.", + "initial-config": { + "title": "Set initial password", + "password": "Password", + "repeat-password": "Repeat password", + "set-password": "Set password", + "done": "Password set. Please use it to access the system.", + "error": "Error. Please make sure you have not already set the password." + }, + "errors": { + "bad-old-password": "The provided old password is not correct.", + "old-password-required": "Old password is required.", + "new-password-error": "Password must be 6-64 characters long.", + "passwords-not-match": "Passwords do not match.", + "default-password": "Don't use the default password (1234)." + } + }, + "updater-config" : { + "open-link": "Show updater settings", + "open-confirmation": "The updater settings are for experienced users only. Are you sure you want to continue?", + "help": "Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.", + "channel": "Channel", + "version": "Version", + "archive-url": "Archive URL", + "checksum-url": "Checksum URL", + "not-saved": "The changes have not been saved yet.", + "save": "Save changes", + "remove-settings": "Remove the settings", + "saved": "The custom settings have been saved.", + "removed": "The custom settings have been removed.", + "save-confirmation": "Are you sure you want to apply the custom settings?", + "remove-confirmation": "Are you sure you want to remove the custom settings?" + }, + "change-password": "Change password", + "refresh-rate": "Refresh rate", + "refresh-rate-help": "Time the system waits to update the data automatically.", + "refresh-rate-confirmation": "Refresh rate changed.", + "seconds": "seconds" + }, + + "login": { + "password": "Password", + "incorrect-password": "Incorrect password.", + "initial-config": "Configure initial launch" + }, + + "actions": { + "menu": { + "terminal": "Terminal", + "config": "Configuration", + "update": "Update", + "reboot": "Reboot" + }, + "reboot": { + "confirmation": "Are you sure you want to reboot the visor?", + "done": "The visor is restarting." + }, + "terminal-options": { + "full": "Full terminal", + "simple": "Simple terminal" + }, + "terminal": { + "title": "Terminal", + "input-start": "Skywire terminal for {{address}}", + "error": "Unexpected error while trying to execute the command." + } + }, + + "update": { + "title": "Update", + "error-title": "Error", + "processing": "Looking for updates...", + "no-update": "There is no update for the visor. The currently installed version is:", + "no-updates": "No new updates were found.", + "already-updating": "Some visors are already being updated:", + "update-available": "The following updates were found:", + "update-available-singular": "The following updates for 1 visor were found:", + "update-available-plural": "The following updates for {{ number }} visors were found:", + "update-available-additional-singular": "The following additional updates for 1 visor were found:", + "update-available-additional-plural": "The following additional updates for {{ number }} visors were found:", + "update-instructions": "Click the 'Install updates' button to continue.", + "updating": "The update operation has been started, you can open this window again for checking the progress:", + "version-change": "From {{ currentVersion }} to {{ newVersion }}", + "selected-channel": "Selected channel:", + "downloaded-file-name-prefix": "Downloading: ", + "speed-prefix": "Speed: ", + "time-downloading-prefix": "Time downloading: ", + "time-left-prefix": "Aprox. time left: ", + "starting": "Preparing to update", + "finished": "Status connection finished", + "install": "Install updates" + }, + + "apps": { + "log": { + "title": "Log", + "empty": "There are no log messages for the selected time range.", + "filter-button": "Only showing logs generated since:", + "filter": { + "title": "Filter", + "filter": "Only show logs generated since", + "7-days": "The last 7 days", + "1-month": "The last 30 days", + "3-months": "The last 3 months", + "6-months": "The last 6 months", + "1-year": "The last year", + "all": "Show all" + } + }, + "apps-list": { + "title": "Applications", + "list-title": "Application list", + "app-name": "Name", + "port": "Port", + "state": "State", + "state-tooltip": "Current state", + "auto-start": "Auto start", + "empty": "Visor doesn't have any applications.", + "empty-with-filter": "No app matches the selected filtering criteria.", + "disable-autostart": "Disable autostart", + "enable-autostart": "Enable autostart", + "autostart-disabled": "Autostart disabled", + "autostart-enabled": "Autostart enabled", + "unavailable-logs-error": "Unable to show the logs while the app is not running.", + + "filter-dialog": { + "state": "The state must be", + "name": "The name must contain", + "port": "The port must contain", + "autostart": "The autostart must be", + + "state-options": { + "any": "Running or stopped", + "running": "Running", + "stopped": "Stopped" + }, + + "autostart-options": { + "any": "Enabled or disabled", + "enabled": "Enabled", + "disabled": "Disabled" + } + } + }, + "vpn-socks-server-settings": { + "socks-title": "Skysocks Settings", + "vpn-title": "VPN-Server Settings", + "new-password": "New password (Leave empty to remove the password)", + "repeat-password": "Repeat password", + "passwords-not-match": "Passwords do not match.", + "secure-mode-check": "Use secure mode", + "secure-mode-info": "When active, the server doesn't allow client/server SSH and doesn't allow any traffic from VPN clients to the server local network.", + "save": "Save", + "remove-passowrd-confirmation": "You left the password field empty. Are you sure you want to remove the password?", + "change-passowrd-confirmation": "Are you sure you want to change the password?", + "changes-made": "The changes have been made." + }, + "vpn-socks-client-settings": { + "socks-title": "Skysocks-Client Settings", + "vpn-title": "VPN-Client Settings", + "discovery-tab": "Search", + "remote-visor-tab": "Enter manually", + "history-tab": "History", + "settings-tab": "Settings", + "use": "Use this data", + "change-note": "Change note", + "remove-entry": "Remove entry", + "note": "Note:", + "note-entered-manually": "Entered manually", + "note-obtained": "Obtained from the discovery service", + "key": "Key:", + "port": "Port:", + "location": "Location:", + "state-available": "Available", + "state-offline": "Offline", + "public-key": "Remote visor public key", + "password": "Password", + "password-history-warning": "Note: the password will not be saved in the history.", + "copy-pk-info": "Copy public key.", + "copied-pk-info": "The public key has been copied.", + "copy-pk-error": "There was a problem copying the public key.", + "no-elements": "Currently there are no elements to show. Please try again later.", + "no-elements-for-filters": "There are no elements that meet the filter criteria.", + "no-filter": "No filter has been selected", + "click-to-change": "Click to change", + "remote-key-length-error": "The public key must be 66 characters long.", + "remote-key-chars-error": "The public key must only contain hexadecimal characters.", + "save": "Save", + "remove-from-history-confirmation": "Are you sure you want to remove the entry from the history?", + "change-key-confirmation": "Are you sure you want to change the remote visor public key?", + "changes-made": "The changes have been made.", + "no-history": "This tab will show the last {{ number }} public keys used.", + "default-note-warning": "The default note has been used.", + "pagination-info": "{{ currentElementsRange }} of {{ totalElements }}", + "killswitch-check": "Activate killswitch", + "killswitch-info": "When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem).", + "settings-changed-alert": " The changes have not been saved yet.", + "save-settings": "Save settings", + + "change-note-dialog": { + "title": "Change Note", + "note": "Note" + }, + + "password-dialog": { + "title": "Enter Password", + "password": "Password", + "info": "You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.", + "continue-button": "Continue" + }, + + "filter-dialog": { + "title": "Filters", + "country": "The country must be", + "any-country": "Any", + "location": "The location must contain", + "pub-key": "The public key must contain", + "apply": "Apply" + } + }, + "stop-app": "Stop", + "start-app": "Start", + "view-logs": "View logs", + "settings": "Settings", + "error": "An error has occured and it was not possible to perform the operation.", + "stop-confirmation": "Are you sure you want to stop the app?", + "stop-selected-confirmation": "Are you sure you want to stop the selected apps?", + "disable-autostart-confirmation": "Are you sure you want to disable autostart for the app?", + "enable-autostart-confirmation": "Are you sure you want to enable autostart for the app?", + "disable-autostart-selected-confirmation": "Are you sure you want to disable autostart for the selected apps?", + "enable-autostart-selected-confirmation": "Are you sure you want to enable autostart for the selected apps?", + "operation-completed": "Operation completed.", + "operation-unnecessary": "The selection already has the requested setting.", + "status-running": "Running", + "status-stopped": "Stopped", + "status-failed": "Failed", + "status-running-tooltip": "App is currently running", + "status-stopped-tooltip": "App is currently stopped", + "status-failed-tooltip": "Something went wrong. Check the app's messages for more information" + }, + + "transports": { + "title": "Transports", + "remove-all-offline": "Remove all offline transports", + "remove-all-offline-confirmation": "Are you sure you want to remove all offline transports?", + "remove-all-filtered-offline-confirmation": "All offline transports satisfying the current filtering criteria will be removed. Are you sure you want to continue?", + "info": "Connections you have with remote Skywire visors, to allow local Skywire apps to communicate with apps running on those remote visors.", + "list-title": "Transport list", + "state": "State", + "state-tooltip": "Current state", + "id": "ID", + "remote-node": "Remote", + "type": "Type", + "create": "Create transport", + "delete-confirmation": "Are you sure you want to delete the transport?", + "delete-selected-confirmation": "Are you sure you want to delete the selected transports?", + "delete": "Delete transport", + "deleted": "Delete operation completed.", + "empty": "Visor doesn't have any transports.", + "empty-with-filter": "No transport matches the selected filtering criteria.", + "statuses": { + "online": "Online", + "online-tooltip": "Transport is online", + "offline": "Offline", + "offline-tooltip": "Transport is offline" + }, + "details": { + "title": "Details", + "basic": { + "title": "Basic info", + "state": "State:", + "id": "ID:", + "local-pk": "Local public key:", + "remote-pk": "Remote public key:", + "type": "Type:" + }, + "data": { + "title": "Data transmission", + "uploaded": "Uploaded data:", + "downloaded": "Downloaded data:" + } + }, + "dialog": { + "remote-key": "Remote public key", + "label": "Identification name (optional)", + "transport-type": "Transport type", + "success": "Transport created.", + "success-without-label": "The transport was created, but it was not possible to save the label.", + "errors": { + "remote-key-length-error": "The remote public key must be 66 characters long.", + "remote-key-chars-error": "The remote public key must only contain hexadecimal characters.", + "transport-type-error": "The transport type is required." + } + }, + "filter-dialog": { + "online": "The transport must be", + "id": "The id must contain", + "remote-node": "The remote key must contain", + + "online-options": { + "any": "Online or offline", + "online": "Online", + "offline": "Offline" + } + } + }, + + "routes": { + "title": "Routes", + "info": "Paths used to reach the remote visors to which transports have been established. Routes are automatically generated as needed.", + "list-title": "Route list", + "key": "Key", + "type": "Type", + "source": "Source", + "destination": "Destination", + "delete-confirmation": "Are you sure you want to delete the route?", + "delete-selected-confirmation": "Are you sure you want to delete the selected routes?", + "delete": "Delete route", + "deleted": "Delete operation completed.", + "empty": "Visor doesn't have any routes.", + "empty-with-filter": "No route matches the selected filtering criteria.", + "details": { + "title": "Details", + "basic": { + "title": "Basic info", + "key": "Key:", + "rule": "Rule:" + }, + "summary": { + "title": "Rule summary", + "keep-alive": "Keep alive:", + "type": "Rule type:", + "key-route-id": "Key route ID:" + }, + "specific-fields-titles": { + "app": "App fields", + "forward": "Forward fields", + "intermediary-forward": "Intermediary forward fields" + }, + "specific-fields": { + "route-id": "Next route ID:", + "transport-id": "Next transport ID:", + "destination-pk": "Destination public key:", + "source-pk": "Source public key:", + "destination-port": "Destination port:", + "source-port": "Source port:" + } + }, + "filter-dialog": { + "key": "The key must contain", + "type": "The type must be", + "source": "The source must contain", + "destination": "The destination must contain", + "any-type-option": "Any" + } + }, + + "copy": { + "tooltip": "Click to copy", + "tooltip-with-text": "{{ text }} (Click to copy)", + "copied": "Copied!" + }, + + "selection": { + "select-all": "Select all", + "unselect-all": "Unselect all", + "delete-all": "Delete all selected elements", + "start-all": "Start all selected apps", + "stop-all": "Stop all selected apps", + "enable-autostart-all": "Enable autostart for all selected apps", + "disable-autostart-all": "Disable autostart for all selected apps" + }, + + "refresh-button": { + "seconds": "Updated a few seconds ago", + "minute": "Updated 1 minute ago", + "minutes": "Updated {{ time }} minutes ago", + "hour": "Updated 1 hour ago", + "hours": "Updated {{ time }} hours ago", + "day": "Updated 1 day ago", + "days": "Updated {{ time }} days ago", + "week": "Updated 1 week ago", + "weeks": "Updated {{ time }} weeks ago", + "error-tooltip": "There was an error updating the data. Retrying automatically every {{ time }} seconds..." + }, + + "view-all-link": { + "label": "View all {{ number }} elements" + }, + + "paginator": { + "first": "First", + "last": "Last", + "total": "Total: {{ number }} pages", + "select-page-title": "Select page" + }, + + "confirmation" : { + "header-text": "Confirmation", + "confirm-button": "Yes", + "cancel-button": "No", + "close": "Close", + "error-header-text": "Error", + "done-header-text": "Done" + }, + + "language" : { + "title": "Select language" + }, + + "tabs-window" : { + "title" : "Change tab" + } +} diff --git a/cmd/skywire-visor/static/assets/i18n/es.json b/cmd/skywire-visor/static/assets/i18n/es.json new file mode 100644 index 0000000000..41e1b37741 --- /dev/null +++ b/cmd/skywire-visor/static/assets/i18n/es.json @@ -0,0 +1,599 @@ +{ + "common": { + "save": "Guardar", + "cancel": "Cancelar", + "downloaded": "Recibido", + "uploaded": "Enviado", + "loading-error": "Hubo un error obteniendo los datos. Reintentando...", + "operation-error": "Hubo un error al intentar completar la operación.", + "no-connection-error": "No hay conexión a Internet o conexión con el hipervisor.", + "error": "Error:", + "refreshed": "Datos refrescados.", + "options": "Opciones", + "logout": "Cerrar sesión", + "logout-error": "Error cerrando la sesión.", + "time-in-ms": "{{ time }}ms", + "ok": "Ok", + "unknown": "Desconocido", + "close": "Cerrar" + }, + + "labeled-element": { + "edit-label": "Editar etiqueta", + "remove-label": "Remover etiqueta", + "copy": "Copiar", + "remove-label-confirmation": "¿Realmente desea eliminar la etiqueta?", + "unnamed-element": "Sin nombre", + "unnamed-local-visor": "Visor local", + "local-element": "Local", + "tooltip": "Haga clic para copiar la entrada o cambiar la etiqueta", + "tooltip-with-text": "{{ text }} (Haga clic para copiar la entrada o cambiar la etiqueta)" + }, + + "labels": { + "title": "Etiquetas", + "list-title": "Lista de etiquetas", + "label": "Etiqueta", + "id": "ID del elemento", + "type": "Tipo", + "delete-confirmation": "¿Seguro que desea borrar la etiqueta?", + "delete-selected-confirmation": "¿Seguro que desea borrar las etiquetas seleccionados?", + "delete": "Borrar etiqueta", + "deleted": "Operación de borrado completada.", + "empty": "No hay etiquetas guardadas.", + "empty-with-filter": "Ninguna etiqueta coincide con los criterios de filtrado seleccionados.", + "filter-dialog": { + "label": "La etiqueta debe contener", + "id": "El id debe contener", + "type": "El tipo debe ser", + + "type-options": { + "any": "Cualquiera", + "visor": "Visor", + "dmsg-server": "Servidor DMSG", + "transport": "Transporte" + } + } + }, + + "filters": { + "filter-action": "Filtrar", + "active-filters": "Filtros activos: ", + "press-to-remove": "(Presione para remover)", + "remove-confirmation": "¿Seguro que desea remover los filtros?" + }, + + "tables": { + "title": "Ordenar por", + "sorting-title": "Ordenado por:", + "ascending-order": "(ascendente)", + "descending-order": "(descendente)" + }, + + "start": { + "title": "Inicio" + }, + + "node": { + "title": "Detalles del visor", + "not-found": "Visor no encontrado.", + "statuses": { + "online": "Online", + "online-tooltip": "El visor se encuentra online.", + "partially-online": "Online con problemas", + "partially-online-tooltip": "El visor se encuentra online pero no todos los servicios están funcionando. Para más información, abra la página de detalles y consulte la sección \"Información de salud\".", + "offline": "Offline", + "offline-tooltip": "El visor se encuentra offline." + }, + "details": { + "node-info": { + "title": "Información del visor", + "label": "Etiqueta:", + "public-key": "Llave pública:", + "port": "Puerto:", + "dmsg-server": "Servidor DMSG:", + "ping": "Ping:", + "node-version": "Versión del visor:", + "time": { + "title": "Tiempo online:", + "seconds": "unos segundos", + "minute": "1 minuto", + "minutes": "{{ time }} minutos", + "hour": "1 hora", + "hours": "{{ time }} horas", + "day": "1 día", + "days": "{{ time }} días", + "week": "1 semana", + "weeks": "{{ time }} semanas" + } + }, + "node-health": { + "title": "Información de salud", + "status": "Estatus:", + "transport-discovery": "Transport discovery:", + "route-finder": "Route finder:", + "setup-node": "Setup node:", + "uptime-tracker": "Uptime tracker:", + "address-resolver": "Address resolver:", + "element-offline": "Offline" + }, + "node-traffic-data": "Datos de tráfico" + }, + "tabs": { + "info": "Info", + "apps": "Apps", + "routing": "Enrutamiento" + }, + "error-load": "Hubo un error al intentar refrescar los datos. Reintentando..." + }, + + "nodes": { + "title": "Lista de visores", + "dmsg-title": "DMSG", + "update-all": "Actualizar todos los visores", + "hypervisor": "Hypervisor", + "state": "Estado", + "state-tooltip": "Estado actual", + "label": "Etiqueta", + "key": "Llave", + "dmsg-server": "Servidor DMSG", + "ping": "Ping", + "hypervisor-info": "Este visor es el Hypervisor actual.", + "copy-key": "Copiar llave", + "copy-dmsg": "Copiar llave DMSG", + "copy-data": "Copiar datos", + "view-node": "Ver visor", + "delete-node": "Remover visor", + "delete-all-offline": "Remover todos los visores offline", + "error-load": "Hubo un error al intentar refrescar la lista. Reintentando...", + "empty": "No hay ningún visor conectado a este hypervisor.", + "empty-with-filter": "Ningun visor coincide con los criterios de filtrado seleccionados.", + "delete-node-confirmation": "¿Seguro que desea remover el visor de la lista?", + "delete-all-offline-confirmation": "¿Seguro que desea remover todos los visores offline de la lista?", + "delete-all-filtered-offline-confirmation": "Todos los visores offline que satisfagan los criterios de filtrado actuales serán removidos de la lista. ¿Seguro que desea continuar?", + "deleted": "Visor removido.", + "deleted-singular": "1 visor offline removido.", + "deleted-plural": "{{ number }} visores offline removidos.", + "no-offline-nodes": "No se encontraron visores offline.", + "no-visors-to-update": "No hay visores para actualizar.", + "filter-dialog": { + "online": "El visor debe estar", + "label": "La etiqueta debe contener", + "key": "La llave debe contener", + "dmsg": "La llave del servidor DMSG debe contener", + + "online-options": { + "any": "Online u offline", + "online": "Online", + "offline": "Offline" + } + } + }, + + "edit-label": { + "label": "Etiqueta", + "done": "Etiqueta guardada.", + "label-removed-warning": "La etiqueta fue removida." + }, + + "settings": { + "title": "Configuración", + "password" : { + "initial-config-help": "Use esta opción para establecer la contraseña inicial. Después de establecer una contraseña no es posible usar esta opción para modificarla.", + "help": "Opciones para cambiar la contraseña.", + "old-password": "Contraseña actual", + "new-password": "Nueva contraseña", + "repeat-password": "Repita la contraseña", + "password-changed": "Contraseña cambiada.", + "error-changing": "Error cambiando la contraseña.", + "initial-config": { + "title": "Establecer contraseña inicial", + "password": "Contraseña", + "repeat-password": "Repita la contraseña", + "set-password": "Establecer contraseña", + "done": "Contraseña establecida. Por favor úsela para acceder al sistema.", + "error": "Error. Por favor asegúrese de que no hubiese establecido la contraseña anteriormente." + }, + "errors": { + "bad-old-password": "La contraseña actual introducida no es correcta.", + "old-password-required": "La contraseña actual es requerida.", + "new-password-error": "La contraseña debe tener entre 6 y 64 caracteres.", + "passwords-not-match": "Las contraseñas no coinciden.", + "default-password": "No utilice la contraseña por defecto (1234)." + } + }, + "updater-config" : { + "open-link": "Mostrar la configuración del actualizador", + "open-confirmation": "La configuración del actualizador es sólo para usuarios experimentados. Seguro que desea continuar?", + "help": "Utilice este formulario para modificar la configuración que utilizará el actualizador. Se ignorarán todos los campos vacíos. La configuración se utilizará para todas las operaciones de actualización, sin importar qué elemento se esté actualizando, así que por favor tenga cuidado.", + "channel": "Canal", + "version": "Versión", + "archive-url": "URL del archivo", + "checksum-url": "URL del checksum", + "not-saved": "Los cambios aún no se han guardado.", + "save": "Guardar cambios", + "remove-settings": "Remover la configuración", + "saved": "Las configuracion personalizada ha sido guardada.", + "removed": "Las configuracion personalizada ha sido removida.", + "save-confirmation": "¿Seguro que desea aplicar la configuración personalizada?", + "remove-confirmation": "¿Seguro que desea remover la configuración personalizada?" + }, + "change-password": "Cambiar contraseña", + "refresh-rate": "Frecuencia de refrescado", + "refresh-rate-help": "Tiempo que el sistema espera para actualizar automáticamente los datos.", + "refresh-rate-confirmation": "Frecuencia de refrescado cambiada.", + "seconds": "segundos" + }, + + "login": { + "password": "Contraseña", + "incorrect-password": "Contraseña incorrecta.", + "initial-config": "Configurar lanzamiento inicial" + }, + + "actions": { + "menu": { + "terminal": "Terminal", + "config": "Configuración", + "update": "Actualizar", + "reboot": "Reiniciar" + }, + "reboot": { + "confirmation": "¿Seguro que desea reiniciar el visor?", + "done": "El visor se está reiniciando." + }, + "terminal-options": { + "full": "Terminal completa", + "simple": "Terminal simple" + }, + "terminal": { + "title": "Terminal", + "input-start": "Terminal de Skywire para {{address}}", + "error": "Error inesperado mientras se intentaba ejecutar el comando." + } + }, + + "update": { + "title": "Actualizar", + "error-title": "Error", + "processing": "Buscando actualizaciones...", + "no-update": "No hay ninguna actualización para el visor. La versión instalada actualmente es:", + "no-updates": "No se encontraron nuevas actualizaciones.", + "already-updating": "Algunos visores ya están siendo actualizandos:", + "update-available": "Las siguientes actualizaciones fueron encontradas:", + "update-available-singular": "Las siguientes actualizaciones para 1 visor fueron encontradas:", + "update-available-plural": "Las siguientes actualizaciones para {{ number }} visores fueron encontradas:", + "update-available-additional-singular": "Las siguientes actualizaciones adicionales para 1 visor fueron encontradas:", + "update-available-additional-plural": "Las siguientes actualizaciones adicionales para {{ number }} visores fueron encontradas:", + "update-instructions": "Haga clic en el botón 'Instalar actualizaciones' para continuar.", + "updating": "La operación de actualización se ha iniciado, puede abrir esta ventana nuevamente para verificar el progreso:", + "version-change": "De {{ currentVersion }} a {{ newVersion }}", + "selected-channel": "Canal seleccionado:", + "downloaded-file-name-prefix": "Descargando: ", + "speed-prefix": "Velocidad: ", + "time-downloading-prefix": "Tiempo descargando: ", + "time-left-prefix": "Tiempo aprox. faltante: ", + "starting": "Preparando para actualizar", + "finished": "Conexión de estado terminada", + "install": "Instalar actualizaciones" + }, + + "apps": { + "log": { + "title": "Log", + "empty": "No hay mensajes de log para el rango de fecha seleccionado.", + "filter-button": "Mostrando sólo logs generados desde:", + "filter": { + "title": "Filtro", + "filter": "Mostrar sólo logs generados desde", + "7-days": "Los últimos 7 días", + "1-month": "Los últimos 30 días", + "3-months": "Los últimos 3 meses", + "6-months": "Los últimos 6 meses", + "1-year": "El último año", + "all": "mostrar todos" + } + }, + "apps-list": { + "title": "Aplicaciones", + "list-title": "Lista de aplicaciones", + "app-name": "Nombre", + "port": "Puerto", + "state": "Estado", + "state-tooltip": "Estado actual", + "auto-start": "Autoinicio", + "empty": "El visor no tiene ninguna aplicación.", + "empty-with-filter": "Ninguna app coincide con los criterios de filtrado seleccionados.", + "disable-autostart": "Deshabilitar autoinicio", + "enable-autostart": "Habilitar autoinicio", + "autostart-disabled": "Autoinicio deshabilitado", + "autostart-enabled": "Autoinicio habilitado", + "unavailable-logs-error": "No es posible mostrar los logs mientras la aplicación no se está ejecutando.", + + "filter-dialog": { + "state": "El estado debe ser", + "name": "El nombre debe contener", + "port": "El puerto debe contener", + "autostart": "El autoinicio debe estar", + + "state-options": { + "any": "Iniciada o detenida", + "running": "Iniciada", + "stopped": "Detenida" + }, + + "autostart-options": { + "any": "Activado or desactivado", + "enabled": "Activado", + "disabled": "Desactivado" + } + } + }, + "vpn-socks-server-settings": { + "socks-title": "Configuración de Skysocks", + "vpn-title": "Configuración de VPN-Server", + "new-password": "Nueva contraseña (dejar en blanco para eliminar la contraseña)", + "repeat-password": "Repita la contraseña", + "passwords-not-match": "Las contraseñas no coinciden.", + "secure-mode-check": "Usar modo seguro", + "secure-mode-info": "Cuando está activo, el servidor no permite SSH con los clientes y no permite ningún tráfico de clientes VPN a la red local del servidor.", + "save": "Guardar", + "remove-passowrd-confirmation": "Ha dejado el campo de contraseña vacío. ¿Seguro que desea eliminar la contraseña?", + "change-passowrd-confirmation": "¿Seguro que desea cambiar la contraseña?", + "changes-made": "Los cambios han sido realizados." + }, + "vpn-socks-client-settings": { + "socks-title": "Configuración de Skysocks-Client", + "vpn-title": "Configuración de VPN-Client", + "discovery-tab": "Buscar", + "remote-visor-tab": "Introducir manualmente", + "settings-tab": "Configuracion", + "history-tab": "Historial", + "use": "Usar estos datos", + "change-note": "Cambiar nota", + "remove-entry": "Remover entrada", + "note": "Nota:", + "note-entered-manually": "Introducido manualmente", + "note-obtained": "Obtenido del servicio de descubrimiento", + "key": "Llave:", + "port": "Puerto:", + "location": "Ubicación:", + "state-available": "Disponible", + "state-offline": "Offline", + "public-key": "Llave pública del visor remoto", + "password": "Contraseña", + "password-history-warning": "Nota: la contraseña no se guardará en el historial.", + "copy-pk-info": "Copiar la llave pública.", + "copied-pk-info": "La llave pública ha sido copiada.", + "copy-pk-error": "Hubo un problema al intentar cambiar la llave pública.", + "no-elements": "Actualmente no hay elementos para mostrar. Por favor, inténtelo de nuevo más tarde.", + "no-elements-for-filters": "No hay elementos que cumplan los criterios de filtro.", + "no-filter": "No se ha seleccionado ningún filtro", + "click-to-change": "Haga clic para cambiar", + "remote-key-length-error": "La llave pública debe tener 66 caracteres.", + "remote-key-chars-error": "La llave pública sólo debe contener caracteres hexadecimales.", + "save": "Guardar", + "remove-from-history-confirmation": "¿Seguro de que desea eliminar la entrada del historial?", + "change-key-confirmation": "¿Seguro que desea cambiar la llave pública del visor remoto?", + "changes-made": "Los cambios han sido realizados.", + "no-history": "Esta pestaña mostrará las últimas {{ number }} llaves públicas usadas.", + "default-note-warning": "La nota por defecto ha sido utilizada.", + "pagination-info": "{{ currentElementsRange }} de {{ totalElements }}", + "killswitch-check": "Activar killswitch", + "killswitch-info": "Cuando está activo, todas las conexiones de red se desactivarán si la aplicación se está ejecutando pero la protección VPN está interrumpida (por errores temporales o cualquier otro problema).", + "settings-changed-alert": "Los cambios aún no se han guardado.", + "save-settings": "Guardar configuracion", + + "change-note-dialog": { + "title": "Cambiar Nota", + "note": "Nota" + }, + + "password-dialog": { + "title": "Introducir Contraseña", + "password": "Contraseña", + "info": "Se le solicita una contraseña porque una contraseña fue utilizada cuando se creó la entrada seleccionada, pero no fue guardada por razones de seguridad. Puede dejar la contraseña vacía si es necesario.", + "continue-button": "Continuar" + }, + + "filter-dialog": { + "title": "Filtros", + "country": "El país debe ser", + "any-country": "Cualquiera", + "location": "La ubicación debe contener", + "pub-key": "La llave pública debe contener", + "apply": "Aplicar" + } + }, + "stop-app": "Detener", + "start-app": "Iniciar", + "view-logs": "Ver logs", + "settings": "Configuración", + "error": "Se produjo un error y no fue posible realizar la operación.", + "stop-confirmation": "¿Seguro que desea detener la aplicación?", + "stop-selected-confirmation": "¿Seguro que desea detener las aplicaciones seleccionadas?", + "disable-autostart-confirmation": "¿Seguro que desea deshabilitar el autoinicio de la aplicación?", + "enable-autostart-confirmation": "¿Seguro que desea habilitar el autoinicio de la aplicación?", + "disable-autostart-selected-confirmation": "¿Seguro que desea deshabilitar el autoinicio de las aplicaciones seleccionadas?", + "enable-autostart-selected-confirmation": "¿Seguro que desea habilitar el autoinicio de las aplicaciones seleccionadas?", + "operation-completed": "Operación completada.", + "operation-unnecessary": "La selección ya tiene la configuración solicitada.", + "status-running": "Corriendo", + "status-stopped": "Detenida", + "status-failed": "Fallida", + "status-running-tooltip": "La aplicación está actualmente corriendo", + "status-stopped-tooltip": "La aplicación está actualmente detenida", + "status-failed-tooltip": "Algo salió mal. Revise los mensajes de la aplicación para más información" + }, + + "transports": { + "title": "Transportes", + "remove-all-offline": "Remover todos los transportes offline", + "remove-all-offline-confirmation": "¿Seguro que desea remover todos los transportes offline?", + "remove-all-filtered-offline-confirmation": "Todos los transportes offline que satisfagan los criterios de filtrado actuales serán removidos. ¿Seguro que desea continuar?", + "list-title": "Lista de transportes", + "state": "Estado", + "state-tooltip": "Estado actual", + "id": "ID", + "remote-node": "Remoto", + "type": "Tipo", + "create": "Crear transporte", + "delete-confirmation": "¿Seguro que desea borrar el transporte?", + "delete-selected-confirmation": "¿Seguro que desea borrar los transportes seleccionados?", + "delete": "Borrar transporte", + "deleted": "Operación de borrado completada.", + "empty": "El visor no tiene ningún transporte.", + "empty-with-filter": "Ningun transporte coincide con los criterios de filtrado seleccionados.", + "statuses": { + "online": "Online", + "online-tooltip": "El transporte está online", + "offline": "Offline", + "offline-tooltip": "El transporte está offline" + }, + "details": { + "title": "Detalles", + "basic": { + "title": "Información básica", + "state": "Estado:", + "id": "ID:", + "local-pk": "Llave pública local:", + "remote-pk": "Llave pública remota:", + "type": "Tipo:" + }, + "data": { + "title": "Transmisión de datos", + "uploaded": "Datos enviados:", + "downloaded": "Datos recibidos:" + } + }, + "dialog": { + "remote-key": "Llave pública remota", + "label": "Nombre del transporte (opcional)", + "transport-type": "Tipo de transporte", + "success": "Transporte creado.", + "success-without-label": "El transporte fue creado, pero no fue posible guardar la etiqueta.", + "errors": { + "remote-key-length-error": "La llave pública remota debe tener 66 caracteres.", + "remote-key-chars-error": "La llave pública remota sólo debe contener caracteres hexadecimales.", + "transport-type-error": "El tipo de transporte es requerido." + } + }, + "filter-dialog": { + "online": "El transporte debe estar", + "id": "El id debe contener", + "remote-node": "La llave remota debe contener", + + "online-options": { + "any": "Online u offline", + "online": "Online", + "offline": "Offline" + } + } + }, + + "routes": { + "title": "Rutas", + "list-title": "Lista de rutas", + "key": "Llave", + "type": "Tipo", + "source": "Inicio", + "destination": "Destino", + "delete-confirmation": "¿Seguro que desea borrar la ruta?", + "delete-selected-confirmation": "¿Seguro que desea borrar las rutas seleccionadas?", + "delete": "Borrar ruta", + "deleted": "Operación de borrado completada.", + "empty": "El visor no tiene ninguna ruta.", + "empty-with-filter": "Ninguna ruta coincide con los criterios de filtrado seleccionados.", + "details": { + "title": "Detalles", + "basic": { + "title": "Información básica", + "key": "Llave:", + "rule": "Regla:" + }, + "summary": { + "title": "Resumen de regla", + "keep-alive": "Keep alive:", + "type": "Tipo de regla:", + "key-route-id": "ID de la llave de la ruta:" + }, + "specific-fields-titles": { + "app": "Campos de applicación", + "forward": "Campos de reenvío", + "intermediary-forward": "Campos de reenvío intermedio" + }, + "specific-fields": { + "route-id": "ID de la siguiente ruta:", + "transport-id": "ID del siguiente transporte:", + "destination-pk": "Llave pública de destino:", + "source-pk": "Llave pública de origen:", + "destination-port": "Puerto de destino:", + "source-port": "Puerto de origen:" + } + }, + "filter-dialog": { + "key": "La llave debe contener", + "type": "El tipo debe ser", + "source": "El inicio debe contener", + "destination": "El destino debe contener", + "any-type-option": "Cualquiera" + } + }, + + "copy": { + "tooltip": "Presione para copiar", + "tooltip-with-text": "{{ text }} (Presione para copiar)", + "copied": "¡Copiado!" + }, + + "selection": { + "select-all": "Seleccionar todo", + "unselect-all": "Deseleccionar todo", + "delete-all": "Borrar los elementos seleccionados", + "start-all": "Iniciar las apps seleccionadas", + "stop-all": "Detener las apps seleccionadas", + "enable-autostart-all": "Habilitar el autoinicio de las apps seleccionadas", + "disable-autostart-all": "Deshabilitar el autoinicio de las apps seleccionadas" + }, + + "refresh-button": { + "seconds": "Refrescado hace unos segundos", + "minute": "Refrescado hace un minuto", + "minutes": "Refrescado hace {{ time }} minutos", + "hour": "Refrescado hace una hora", + "hours": "Refrescado hace {{ time }} horas", + "day": "Refrescado hace un día", + "days": "Refrescado hace {{ time }} días", + "week": "Refrescado hace una semana", + "weeks": "Refrescado hace {{ time }} semanas", + "error-tooltip": "Hubo un error al intentar refrescar los datos. Reintentando automáticamente cada {{ time }} segundos..." + }, + + "view-all-link": { + "label": "Ver todos los {{ number }} elementos" + }, + + "paginator": { + "first": "Primera", + "last": "Última", + "total": "Total: {{ number }} páginas", + "select-page-title": "Seleccionar página" + }, + + "confirmation" : { + "header-text": "Confirmación", + "confirm-button": "Sí", + "cancel-button": "No", + "close": "Cerrar", + "error-header-text": "Error", + "done-header-text": "Hecho" + }, + + "language" : { + "title": "Seleccionar lenguaje" + }, + + "tabs-window" : { + "title" : "Cambiar pestaña" + } +} diff --git a/cmd/skywire-visor/static/assets/i18n/es_base.json b/cmd/skywire-visor/static/assets/i18n/es_base.json new file mode 100644 index 0000000000..6a230e43de --- /dev/null +++ b/cmd/skywire-visor/static/assets/i18n/es_base.json @@ -0,0 +1,599 @@ +{ + "common": { + "save": "Save", + "cancel": "Cancel", + "downloaded": "Downloaded", + "uploaded": "Uploaded", + "loading-error": "There was an error getting the data. Retrying...", + "operation-error": "There was an error trying to complete the operation.", + "no-connection-error": "There is no internet connection or connection to the Hypervisor.", + "error": "Error:", + "refreshed": "Data refreshed.", + "options": "Options", + "logout": "Logout", + "logout-error": "Error logging out.", + "time-in-ms": "{{ time }}ms", + "ok": "Ok", + "unknown": "Unknown", + "close": "Close" + }, + + "labeled-element": { + "edit-label": "Edit label", + "remove-label": "Remove label", + "copy": "Copy", + "remove-label-confirmation": "Do you really want to remove the label?", + "unnamed-element": "Unnamed", + "unnamed-local-visor": "Local visor", + "local-element": "Local", + "tooltip": "Click to copy the entry or change the label", + "tooltip-with-text": "{{ text }} (Click to copy the entry or change the label)" + }, + + "labels": { + "title": "Labels", + "list-title": "Label list", + "label": "Label", + "id": "Element ID", + "type": "Type", + "delete-confirmation": "Are you sure you want to delete the label?", + "delete-selected-confirmation": "Are you sure you want to delete the selected labels?", + "delete": "Delete label", + "deleted": "Delete operation completed.", + "empty": "There aren't any saved labels.", + "empty-with-filter": "No label matches the selected filtering criteria.", + "filter-dialog": { + "label": "The label must contain", + "id": "The id must contain", + "type": "The type must be", + + "type-options": { + "any": "Any", + "visor": "Visor", + "dmsg-server": "DMSG server", + "transport": "Transport" + } + } + }, + + "filters": { + "filter-action": "Filter", + "active-filters": "Active filters: ", + "press-to-remove": "(Press to remove)", + "remove-confirmation": "Are you sure you want to remove the filters?" + }, + + "tables": { + "title": "Order by", + "sorting-title": "Ordered by:", + "ascending-order": "(ascending)", + "descending-order": "(descending)" + }, + + "start": { + "title": "Start" + }, + + "node": { + "title": "Visor details", + "not-found": "Visor not found.", + "statuses": { + "online": "Online", + "online-tooltip": "Visor is online.", + "partially-online": "Online with problems", + "partially-online-tooltip": "Visor is online but not all services are working. For more information, open the details page and check the \"Health info\" section.", + "offline": "Offline", + "offline-tooltip": "Visor is offline." + }, + "details": { + "node-info": { + "title": "Visor Info", + "label": "Label:", + "public-key": "Public key:", + "port": "Port:", + "dmsg-server": "DMSG server:", + "ping": "Ping:", + "node-version": "Visor version:", + "time": { + "title": "Time online:", + "seconds": "a few seconds", + "minute": "1 minute", + "minutes": "{{ time }} minutes", + "hour": "1 hour", + "hours": "{{ time }} hours", + "day": "1 day", + "days": "{{ time }} days", + "week": "1 week", + "weeks": "{{ time }} weeks" + } + }, + "node-health": { + "title": "Health info", + "status": "Status:", + "transport-discovery": "Transport discovery:", + "route-finder": "Route finder:", + "setup-node": "Setup node:", + "uptime-tracker": "Uptime tracker:", + "address-resolver": "Address resolver:", + "element-offline": "Offline" + }, + "node-traffic-data": "Traffic data" + }, + "tabs": { + "info": "Info", + "apps": "Apps", + "routing": "Routing" + }, + "error-load": "An error occurred while refreshing the data. Retrying..." + }, + + "nodes": { + "title": "Visor list", + "dmsg-title": "DMSG", + "update-all": "Update all visors", + "hypervisor": "Hypervisor", + "state": "State", + "state-tooltip": "Current state", + "label": "Label", + "key": "Key", + "dmsg-server": "DMSG server", + "ping": "Ping", + "hypervisor-info": "This visor is the current Hypervisor.", + "copy-key": "Copy key", + "copy-dmsg": "Copy DMSG server key", + "copy-data": "Copy data", + "view-node": "View visor", + "delete-node": "Remove visor", + "delete-all-offline": "Remove all offline visors", + "error-load": "An error occurred while refreshing the list. Retrying...", + "empty": "There aren't any visors connected to this hypervisor.", + "empty-with-filter": "No visor matches the selected filtering criteria.", + "delete-node-confirmation": "Are you sure you want to remove the visor from the list?", + "delete-all-offline-confirmation": "Are you sure you want to remove all offline visors from the list?", + "delete-all-filtered-offline-confirmation": "All offline visors satisfying the current filtering criteria will be removed from the list. Are you sure you want to continue?", + "deleted": "Visor removed.", + "deleted-singular": "1 offline visor removed.", + "deleted-plural": "{{ number }} offline visors removed.", + "no-offline-nodes": "No offline visors found.", + "no-visors-to-update": "There are no visors to update.", + "filter-dialog": { + "online": "The visor must be", + "label": "The label must contain", + "key": "The public key must contain", + "dmsg": "The DMSG server key must contain", + + "online-options": { + "any": "Online or offline", + "online": "Online", + "offline": "Offline" + } + } + }, + + "edit-label": { + "label": "Label", + "done": "Label saved.", + "label-removed-warning": "The label was removed." + }, + + "settings": { + "title": "Settings", + "password" : { + "initial-config-help": "Use this option for setting the initial password. After a password has been set, it is not possible to use this option to modify it.", + "help": "Options for changing your password.", + "old-password": "Old password", + "new-password": "New password", + "repeat-password": "Repeat password", + "password-changed": "Password changed.", + "error-changing": "Error changing password.", + "initial-config": { + "title": "Set initial password", + "password": "Password", + "repeat-password": "Repeat password", + "set-password": "Set password", + "done": "Password set. Please use it to access the system.", + "error": "Error. Please make sure you have not already set the password." + }, + "errors": { + "bad-old-password": "The provided old password is not correct.", + "old-password-required": "Old password is required.", + "new-password-error": "Password must be 6-64 characters long.", + "passwords-not-match": "Passwords do not match.", + "default-password": "Don't use the default password (1234)." + } + }, + "updater-config" : { + "open-link": "Show updater settings", + "open-confirmation": "The updater settings are for experienced users only. Are you sure you want to continue?", + "help": "Use this form for overriding the settings that will be used by the updater. All empty fields will be ignored. The settings will be used for all updating operations, no mater which element is being updated, so please be careful.", + "channel": "Channel", + "version": "Version", + "archive-url": "Archive URL", + "checksum-url": "Checksum URL", + "not-saved": "The changes have not been saved yet.", + "save": "Save changes", + "remove-settings": "Remove the settings", + "saved": "The custom settings have been saved.", + "removed": "The custom settings have been removed.", + "save-confirmation": "Are you sure you want to apply the custom settings?", + "remove-confirmation": "Are you sure you want to remove the custom settings?" + }, + "change-password": "Change password", + "refresh-rate": "Refresh rate", + "refresh-rate-help": "Time the system waits to update the data automatically.", + "refresh-rate-confirmation": "Refresh rate changed.", + "seconds": "seconds" + }, + + "login": { + "password": "Password", + "incorrect-password": "Incorrect password.", + "initial-config": "Configure initial launch" + }, + + "actions": { + "menu": { + "terminal": "Terminal", + "config": "Configuration", + "update": "Update", + "reboot": "Reboot" + }, + "reboot": { + "confirmation": "Are you sure you want to reboot the visor?", + "done": "The visor is restarting." + }, + "terminal-options": { + "full": "Full terminal", + "simple": "Simple terminal" + }, + "terminal": { + "title": "Terminal", + "input-start": "Skywire terminal for {{address}}", + "error": "Unexpected error while trying to execute the command." + } + }, + + "update": { + "title": "Update", + "error-title": "Error", + "processing": "Looking for updates...", + "no-update": "There is no update for the visor. The currently installed version is:", + "no-updates": "No new updates were found.", + "already-updating": "Some visors are already being updated:", + "update-available": "The following updates were found:", + "update-available-singular": "The following updates for 1 visor were found:", + "update-available-plural": "The following updates for {{ number }} visors were found:", + "update-available-additional-singular": "The following additional updates for 1 visor were found:", + "update-available-additional-plural": "The following additional updates for {{ number }} visors were found:", + "update-instructions": "Click the 'Install updates' button to continue.", + "updating": "The update operation has been started, you can open this window again for checking the progress:", + "version-change": "From {{ currentVersion }} to {{ newVersion }}", + "selected-channel": "Selected channel:", + "downloaded-file-name-prefix": "Downloading: ", + "speed-prefix": "Speed: ", + "time-downloading-prefix": "Time downloading: ", + "time-left-prefix": "Aprox. time left: ", + "starting": "Preparing to update", + "finished": "Status connection finished", + "install": "Install updates" + }, + + "apps": { + "log": { + "title": "Log", + "empty": "There are no log messages for the selected time range.", + "filter-button": "Only showing logs generated since:", + "filter": { + "title": "Filter", + "filter": "Only show logs generated since", + "7-days": "The last 7 days", + "1-month": "The last 30 days", + "3-months": "The last 3 months", + "6-months": "The last 6 months", + "1-year": "The last year", + "all": "Show all" + } + }, + "apps-list": { + "title": "Applications", + "list-title": "Application list", + "app-name": "Name", + "port": "Port", + "state": "State", + "state-tooltip": "Current state", + "auto-start": "Auto start", + "empty": "Visor doesn't have any applications.", + "empty-with-filter": "No app matches the selected filtering criteria.", + "disable-autostart": "Disable autostart", + "enable-autostart": "Enable autostart", + "autostart-disabled": "Autostart disabled", + "autostart-enabled": "Autostart enabled", + "unavailable-logs-error": "Unable to show the logs while the app is not running.", + + "filter-dialog": { + "state": "The state must be", + "name": "The name must contain", + "port": "The port must contain", + "autostart": "The autostart must be", + + "state-options": { + "any": "Running or stopped", + "running": "Running", + "stopped": "Stopped" + }, + + "autostart-options": { + "any": "Enabled or disabled", + "enabled": "Enabled", + "disabled": "Disabled" + } + } + }, + "vpn-socks-server-settings": { + "socks-title": "Skysocks Settings", + "vpn-title": "VPN-Server Settings", + "new-password": "New password (Leave empty to remove the password)", + "repeat-password": "Repeat password", + "passwords-not-match": "Passwords do not match.", + "secure-mode-check": "Use secure mode", + "secure-mode-info": "When active, the server doesn't allow client/server SSH and doesn't allow any traffic from VPN clients to the server local network.", + "save": "Save", + "remove-passowrd-confirmation": "You left the password field empty. Are you sure you want to remove the password?", + "change-passowrd-confirmation": "Are you sure you want to change the password?", + "changes-made": "The changes have been made." + }, + "vpn-socks-client-settings": { + "socks-title": "Skysocks-Client Settings", + "vpn-title": "VPN-Client Settings", + "discovery-tab": "Search", + "remote-visor-tab": "Enter manually", + "history-tab": "History", + "settings-tab": "Settings", + "use": "Use this data", + "change-note": "Change note", + "remove-entry": "Remove entry", + "note": "Note:", + "note-entered-manually": "Entered manually", + "note-obtained": "Obtained from the discovery service", + "key": "Key:", + "port": "Port:", + "location": "Location:", + "state-available": "Available", + "state-offline": "Offline", + "public-key": "Remote visor public key", + "password": "Password", + "password-history-warning": "Note: the password will not be saved in the history.", + "copy-pk-info": "Copy public key.", + "copied-pk-info": "The public key has been copied.", + "copy-pk-error": "There was a problem copying the public key.", + "no-elements": "Currently there are no elements to show. Please try again later.", + "no-elements-for-filters": "There are no elements that meet the filter criteria.", + "no-filter": "No filter has been selected", + "click-to-change": "Click to change", + "remote-key-length-error": "The public key must be 66 characters long.", + "remote-key-chars-error": "The public key must only contain hexadecimal characters.", + "save": "Save", + "remove-from-history-confirmation": "Are you sure you want to remove the entry from the history?", + "change-key-confirmation": "Are you sure you want to change the remote visor public key?", + "changes-made": "The changes have been made.", + "no-history": "This tab will show the last {{ number }} public keys used.", + "default-note-warning": "The default note has been used.", + "pagination-info": "{{ currentElementsRange }} of {{ totalElements }}", + "killswitch-check": "Activate killswitch", + "killswitch-info": "When active, all network connections will be disabled if the app is running but the VPN protection is interrupted (for temporary errors or any other problem).", + "settings-changed-alert": " The changes have not been saved yet.", + "save-settings": "Save settings", + + "change-note-dialog": { + "title": "Change Note", + "note": "Note" + }, + + "password-dialog": { + "title": "Enter Password", + "password": "Password", + "info": "You are being asked for a password because a password was set when the selected entry was created, but the it was not saved for security reasons. You can leave the password empty if needed.", + "continue-button": "Continue" + }, + + "filter-dialog": { + "title": "Filters", + "country": "The country must be", + "any-country": "Any", + "location": "The location must contain", + "pub-key": "The public key must contain", + "apply": "Apply" + } + }, + "stop-app": "Stop", + "start-app": "Start", + "view-logs": "View logs", + "settings": "Settings", + "error": "An error has occured and it was not possible to perform the operation.", + "stop-confirmation": "Are you sure you want to stop the app?", + "stop-selected-confirmation": "Are you sure you want to stop the selected apps?", + "disable-autostart-confirmation": "Are you sure you want to disable autostart for the app?", + "enable-autostart-confirmation": "Are you sure you want to enable autostart for the app?", + "disable-autostart-selected-confirmation": "Are you sure you want to disable autostart for the selected apps?", + "enable-autostart-selected-confirmation": "Are you sure you want to enable autostart for the selected apps?", + "operation-completed": "Operation completed.", + "operation-unnecessary": "The selection already has the requested setting.", + "status-running": "Running", + "status-stopped": "Stopped", + "status-failed": "Failed", + "status-running-tooltip": "App is currently running", + "status-stopped-tooltip": "App is currently stopped", + "status-failed-tooltip": "Something went wrong. Check the app's messages for more information" + }, + + "transports": { + "title": "Transports", + "remove-all-offline": "Remove all offline transports", + "remove-all-offline-confirmation": "Are you sure you want to remove all offline transports?", + "remove-all-filtered-offline-confirmation": "All offline transports satisfying the current filtering criteria will be removed. Are you sure you want to continue?", + "list-title": "Transport list", + "state": "State", + "state-tooltip": "Current state", + "id": "ID", + "remote-node": "Remote", + "type": "Type", + "create": "Create transport", + "delete-confirmation": "Are you sure you want to delete the transport?", + "delete-selected-confirmation": "Are you sure you want to delete the selected transports?", + "delete": "Delete transport", + "deleted": "Delete operation completed.", + "empty": "Visor doesn't have any transports.", + "empty-with-filter": "No transport matches the selected filtering criteria.", + "statuses": { + "online": "Online", + "online-tooltip": "Transport is online", + "offline": "Offline", + "offline-tooltip": "Transport is offline" + }, + "details": { + "title": "Details", + "basic": { + "title": "Basic info", + "state": "State:", + "id": "ID:", + "local-pk": "Local public key:", + "remote-pk": "Remote public key:", + "type": "Type:" + }, + "data": { + "title": "Data transmission", + "uploaded": "Uploaded data:", + "downloaded": "Downloaded data:" + } + }, + "dialog": { + "remote-key": "Remote public key", + "label": "Identification name (optional)", + "transport-type": "Transport type", + "success": "Transport created.", + "success-without-label": "The transport was created, but it was not possible to save the label.", + "errors": { + "remote-key-length-error": "The remote public key must be 66 characters long.", + "remote-key-chars-error": "The remote public key must only contain hexadecimal characters.", + "transport-type-error": "The transport type is required." + } + }, + "filter-dialog": { + "online": "The transport must be", + "id": "The id must contain", + "remote-node": "The remote key must contain", + + "online-options": { + "any": "Online or offline", + "online": "Online", + "offline": "Offline" + } + } + }, + + "routes": { + "title": "Routes", + "list-title": "Route list", + "key": "Key", + "type": "Type", + "source": "Source", + "destination": "Destination", + "delete-confirmation": "Are you sure you want to delete the route?", + "delete-selected-confirmation": "Are you sure you want to delete the selected routes?", + "delete": "Delete route", + "deleted": "Delete operation completed.", + "empty": "Visor doesn't have any routes.", + "empty-with-filter": "No route matches the selected filtering criteria.", + "details": { + "title": "Details", + "basic": { + "title": "Basic info", + "key": "Key:", + "rule": "Rule:" + }, + "summary": { + "title": "Rule summary", + "keep-alive": "Keep alive:", + "type": "Rule type:", + "key-route-id": "Key route ID:" + }, + "specific-fields-titles": { + "app": "App fields", + "forward": "Forward fields", + "intermediary-forward": "Intermediary forward fields" + }, + "specific-fields": { + "route-id": "Next route ID:", + "transport-id": "Next transport ID:", + "destination-pk": "Destination public key:", + "source-pk": "Source public key:", + "destination-port": "Destination port:", + "source-port": "Source port:" + } + }, + "filter-dialog": { + "key": "The key must contain", + "type": "The type must be", + "source": "The source must contain", + "destination": "The destination must contain", + "any-type-option": "Any" + } + }, + + "copy": { + "tooltip": "Click to copy", + "tooltip-with-text": "{{ text }} (Click to copy)", + "copied": "Copied!" + }, + + "selection": { + "select-all": "Select all", + "unselect-all": "Unselect all", + "delete-all": "Delete all selected elements", + "start-all": "Start all selected apps", + "stop-all": "Stop all selected apps", + "enable-autostart-all": "Enable autostart for all selected apps", + "disable-autostart-all": "Disable autostart for all selected apps" + }, + + "refresh-button": { + "seconds": "Updated a few seconds ago", + "minute": "Updated 1 minute ago", + "minutes": "Updated {{ time }} minutes ago", + "hour": "Updated 1 hour ago", + "hours": "Updated {{ time }} hours ago", + "day": "Updated 1 day ago", + "days": "Updated {{ time }} days ago", + "week": "Updated 1 week ago", + "weeks": "Updated {{ time }} weeks ago", + "error-tooltip": "There was an error updating the data. Retrying automatically every {{ time }} seconds..." + }, + + "view-all-link": { + "label": "View all {{ number }} elements" + }, + + "paginator": { + "first": "First", + "last": "Last", + "total": "Total: {{ number }} pages", + "select-page-title": "Select page" + }, + + "confirmation" : { + "header-text": "Confirmation", + "confirm-button": "Yes", + "cancel-button": "No", + "close": "Close", + "error-header-text": "Error", + "done-header-text": "Done" + }, + + "language" : { + "title": "Select language" + }, + + "tabs-window" : { + "title" : "Change tab" + } +} diff --git a/cmd/skywire-visor/static/assets/img/background-pattern.png b/cmd/skywire-visor/static/assets/img/background-pattern.png new file mode 100644 index 0000000000..15f8183323 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/background-pattern.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ab.png b/cmd/skywire-visor/static/assets/img/flags/ab.png new file mode 100644 index 0000000000..290d11c3e0 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ab.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ad.png b/cmd/skywire-visor/static/assets/img/flags/ad.png new file mode 100644 index 0000000000..625ca84f9e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ad.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ae.png b/cmd/skywire-visor/static/assets/img/flags/ae.png new file mode 100644 index 0000000000..ef3a1ecfcc Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ae.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/af.png b/cmd/skywire-visor/static/assets/img/flags/af.png new file mode 100644 index 0000000000..a4742e299f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/af.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ag.png b/cmd/skywire-visor/static/assets/img/flags/ag.png new file mode 100644 index 0000000000..556d5504dc Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ag.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ai.png b/cmd/skywire-visor/static/assets/img/flags/ai.png new file mode 100644 index 0000000000..74ed29d926 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ai.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/al.png b/cmd/skywire-visor/static/assets/img/flags/al.png new file mode 100644 index 0000000000..92354cb6e2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/al.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/am.png b/cmd/skywire-visor/static/assets/img/flags/am.png new file mode 100644 index 0000000000..344a2a86c4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/am.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/an.png b/cmd/skywire-visor/static/assets/img/flags/an.png new file mode 100644 index 0000000000..633e4b89fd Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/an.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ao.png b/cmd/skywire-visor/static/assets/img/flags/ao.png new file mode 100644 index 0000000000..bcbd1d6d40 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ao.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/aq.png b/cmd/skywire-visor/static/assets/img/flags/aq.png new file mode 100644 index 0000000000..17ea9fc794 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/aq.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ar.png b/cmd/skywire-visor/static/assets/img/flags/ar.png new file mode 100644 index 0000000000..e5ef8f1fcd Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ar.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/as.png b/cmd/skywire-visor/static/assets/img/flags/as.png new file mode 100644 index 0000000000..32f30e4ce4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/as.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/at.png b/cmd/skywire-visor/static/assets/img/flags/at.png new file mode 100644 index 0000000000..0f15f34f28 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/at.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/au.png b/cmd/skywire-visor/static/assets/img/flags/au.png new file mode 100644 index 0000000000..a01389a745 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/au.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/aw.png b/cmd/skywire-visor/static/assets/img/flags/aw.png new file mode 100644 index 0000000000..a3579c2d62 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/aw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ax.png b/cmd/skywire-visor/static/assets/img/flags/ax.png new file mode 100644 index 0000000000..1eea80a7b7 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ax.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/az.png b/cmd/skywire-visor/static/assets/img/flags/az.png new file mode 100644 index 0000000000..4ee9fe5ced Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/az.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ba.png b/cmd/skywire-visor/static/assets/img/flags/ba.png new file mode 100644 index 0000000000..c77499249c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ba.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bb.png b/cmd/skywire-visor/static/assets/img/flags/bb.png new file mode 100644 index 0000000000..0df19c71d2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bb.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bd.png b/cmd/skywire-visor/static/assets/img/flags/bd.png new file mode 100644 index 0000000000..076a8bf87c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bd.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/be.png b/cmd/skywire-visor/static/assets/img/flags/be.png new file mode 100644 index 0000000000..d86ebc800a Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/be.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bf.png b/cmd/skywire-visor/static/assets/img/flags/bf.png new file mode 100644 index 0000000000..ab5ce8fe12 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bg.png b/cmd/skywire-visor/static/assets/img/flags/bg.png new file mode 100644 index 0000000000..0469f0607d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bh.png b/cmd/skywire-visor/static/assets/img/flags/bh.png new file mode 100644 index 0000000000..ea8ce68761 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bh.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bi.png b/cmd/skywire-visor/static/assets/img/flags/bi.png new file mode 100644 index 0000000000..5cc2e30cfc Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bi.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bj.png b/cmd/skywire-visor/static/assets/img/flags/bj.png new file mode 100644 index 0000000000..1cc8b458a4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bj.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bl.png b/cmd/skywire-visor/static/assets/img/flags/bl.png new file mode 100644 index 0000000000..d8462087e6 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bl.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bm.png b/cmd/skywire-visor/static/assets/img/flags/bm.png new file mode 100644 index 0000000000..c0c7aead8d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bn.png b/cmd/skywire-visor/static/assets/img/flags/bn.png new file mode 100644 index 0000000000..8fb09849e9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bo.png b/cmd/skywire-visor/static/assets/img/flags/bo.png new file mode 100644 index 0000000000..ce7ba522aa Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bo.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bq.png b/cmd/skywire-visor/static/assets/img/flags/bq.png new file mode 100644 index 0000000000..c1a13b2659 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bq.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/br.png b/cmd/skywire-visor/static/assets/img/flags/br.png new file mode 100644 index 0000000000..9b1a5538b2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/br.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bs.png b/cmd/skywire-visor/static/assets/img/flags/bs.png new file mode 100644 index 0000000000..639fa6cfa9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bs.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bt.png b/cmd/skywire-visor/static/assets/img/flags/bt.png new file mode 100644 index 0000000000..1d512dfff4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bt.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bv.png b/cmd/skywire-visor/static/assets/img/flags/bv.png new file mode 100644 index 0000000000..160b6b5b79 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bv.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bw.png b/cmd/skywire-visor/static/assets/img/flags/bw.png new file mode 100644 index 0000000000..fcb1039415 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/by.png b/cmd/skywire-visor/static/assets/img/flags/by.png new file mode 100644 index 0000000000..504774ec10 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/by.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/bz.png b/cmd/skywire-visor/static/assets/img/flags/bz.png new file mode 100644 index 0000000000..be63ee1c62 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/bz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ca.png b/cmd/skywire-visor/static/assets/img/flags/ca.png new file mode 100644 index 0000000000..1f204193ae Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ca.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cc.png b/cmd/skywire-visor/static/assets/img/flags/cc.png new file mode 100644 index 0000000000..aed3d3b4e4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cc.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cd.png b/cmd/skywire-visor/static/assets/img/flags/cd.png new file mode 100644 index 0000000000..5e48942488 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cd.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cf.png b/cmd/skywire-visor/static/assets/img/flags/cf.png new file mode 100644 index 0000000000..da687bdce9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cg.png b/cmd/skywire-visor/static/assets/img/flags/cg.png new file mode 100644 index 0000000000..a859792ef3 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ch.png b/cmd/skywire-visor/static/assets/img/flags/ch.png new file mode 100644 index 0000000000..242ec01aaf Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ch.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ci.png b/cmd/skywire-visor/static/assets/img/flags/ci.png new file mode 100644 index 0000000000..3f2c62eb4d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ci.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ck.png b/cmd/skywire-visor/static/assets/img/flags/ck.png new file mode 100644 index 0000000000..746d3d6f75 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ck.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cl.png b/cmd/skywire-visor/static/assets/img/flags/cl.png new file mode 100644 index 0000000000..29c6d61bd4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cl.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cm.png b/cmd/skywire-visor/static/assets/img/flags/cm.png new file mode 100644 index 0000000000..f65c5bd5a7 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cn.png b/cmd/skywire-visor/static/assets/img/flags/cn.png new file mode 100644 index 0000000000..8914414621 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/co.png b/cmd/skywire-visor/static/assets/img/flags/co.png new file mode 100644 index 0000000000..a118ff4a14 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/co.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cr.png b/cmd/skywire-visor/static/assets/img/flags/cr.png new file mode 100644 index 0000000000..c7a3731794 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cs.png b/cmd/skywire-visor/static/assets/img/flags/cs.png new file mode 100644 index 0000000000..8254790ca7 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cs.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cu.png b/cmd/skywire-visor/static/assets/img/flags/cu.png new file mode 100644 index 0000000000..083f1d611c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cu.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cv.png b/cmd/skywire-visor/static/assets/img/flags/cv.png new file mode 100644 index 0000000000..a63f7eaf63 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cv.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cw.png b/cmd/skywire-visor/static/assets/img/flags/cw.png new file mode 100644 index 0000000000..41b22479fe Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cx.png b/cmd/skywire-visor/static/assets/img/flags/cx.png new file mode 100644 index 0000000000..48e31adbf4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cx.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cy.png b/cmd/skywire-visor/static/assets/img/flags/cy.png new file mode 100644 index 0000000000..5b1ad6c078 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cy.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/cz.png b/cmd/skywire-visor/static/assets/img/flags/cz.png new file mode 100644 index 0000000000..c8403dd21f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/cz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/de.png b/cmd/skywire-visor/static/assets/img/flags/de.png new file mode 100644 index 0000000000..ac4a977362 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/de.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/dj.png b/cmd/skywire-visor/static/assets/img/flags/dj.png new file mode 100644 index 0000000000..582af364f8 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/dj.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/dk.png b/cmd/skywire-visor/static/assets/img/flags/dk.png new file mode 100644 index 0000000000..e2993d3c59 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/dk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/dm.png b/cmd/skywire-visor/static/assets/img/flags/dm.png new file mode 100644 index 0000000000..5fbffcba3c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/dm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/do.png b/cmd/skywire-visor/static/assets/img/flags/do.png new file mode 100644 index 0000000000..5a04932d87 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/do.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/dz.png b/cmd/skywire-visor/static/assets/img/flags/dz.png new file mode 100644 index 0000000000..335c2391d3 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/dz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ec.png b/cmd/skywire-visor/static/assets/img/flags/ec.png new file mode 100644 index 0000000000..0caa0b1e78 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ec.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ee.png b/cmd/skywire-visor/static/assets/img/flags/ee.png new file mode 100644 index 0000000000..0c82efb7dd Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ee.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/eg.png b/cmd/skywire-visor/static/assets/img/flags/eg.png new file mode 100644 index 0000000000..8a3f7a10b5 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/eg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/eh.png b/cmd/skywire-visor/static/assets/img/flags/eh.png new file mode 100644 index 0000000000..90a1195b47 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/eh.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/england.png b/cmd/skywire-visor/static/assets/img/flags/england.png new file mode 100644 index 0000000000..3a7311d561 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/england.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/er.png b/cmd/skywire-visor/static/assets/img/flags/er.png new file mode 100644 index 0000000000..13065ae99c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/er.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/es.png b/cmd/skywire-visor/static/assets/img/flags/es.png new file mode 100644 index 0000000000..c2de2d7111 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/es.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/et.png b/cmd/skywire-visor/static/assets/img/flags/et.png new file mode 100644 index 0000000000..2e893fa056 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/et.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/fam.png b/cmd/skywire-visor/static/assets/img/flags/fam.png new file mode 100644 index 0000000000..cf50c759eb Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/fam.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/fi.png b/cmd/skywire-visor/static/assets/img/flags/fi.png new file mode 100644 index 0000000000..14ec091b80 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/fi.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/fj.png b/cmd/skywire-visor/static/assets/img/flags/fj.png new file mode 100644 index 0000000000..cee998892e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/fj.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/fk.png b/cmd/skywire-visor/static/assets/img/flags/fk.png new file mode 100644 index 0000000000..ceaeb27dec Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/fk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/fm.png b/cmd/skywire-visor/static/assets/img/flags/fm.png new file mode 100644 index 0000000000..066bb24738 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/fm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/fo.png b/cmd/skywire-visor/static/assets/img/flags/fo.png new file mode 100644 index 0000000000..cbceb809eb Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/fo.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/fr.png b/cmd/skywire-visor/static/assets/img/flags/fr.png new file mode 100644 index 0000000000..8332c4ec23 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/fr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ga.png b/cmd/skywire-visor/static/assets/img/flags/ga.png new file mode 100644 index 0000000000..0e0d434363 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ga.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gb.png b/cmd/skywire-visor/static/assets/img/flags/gb.png new file mode 100644 index 0000000000..ff701e19f6 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gb.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gd.png b/cmd/skywire-visor/static/assets/img/flags/gd.png new file mode 100644 index 0000000000..9ab57f5489 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gd.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ge.png b/cmd/skywire-visor/static/assets/img/flags/ge.png new file mode 100644 index 0000000000..728d97078d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ge.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gf.png b/cmd/skywire-visor/static/assets/img/flags/gf.png new file mode 100644 index 0000000000..8332c4ec23 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gg.png b/cmd/skywire-visor/static/assets/img/flags/gg.png new file mode 100644 index 0000000000..5031c0f676 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gh.png b/cmd/skywire-visor/static/assets/img/flags/gh.png new file mode 100644 index 0000000000..4e2f896591 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gh.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gi.png b/cmd/skywire-visor/static/assets/img/flags/gi.png new file mode 100644 index 0000000000..e76797f62f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gi.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gl.png b/cmd/skywire-visor/static/assets/img/flags/gl.png new file mode 100644 index 0000000000..ef12a73bf9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gl.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gm.png b/cmd/skywire-visor/static/assets/img/flags/gm.png new file mode 100644 index 0000000000..0720b667af Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gn.png b/cmd/skywire-visor/static/assets/img/flags/gn.png new file mode 100644 index 0000000000..ea660b01fa Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gp.png b/cmd/skywire-visor/static/assets/img/flags/gp.png new file mode 100644 index 0000000000..dbb086d001 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gp.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gq.png b/cmd/skywire-visor/static/assets/img/flags/gq.png new file mode 100644 index 0000000000..ebe20a28de Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gq.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gr.png b/cmd/skywire-visor/static/assets/img/flags/gr.png new file mode 100644 index 0000000000..8651ade7cb Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gs.png b/cmd/skywire-visor/static/assets/img/flags/gs.png new file mode 100644 index 0000000000..7ef0bf598d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gs.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gt.png b/cmd/skywire-visor/static/assets/img/flags/gt.png new file mode 100644 index 0000000000..c43a70d364 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gt.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gu.png b/cmd/skywire-visor/static/assets/img/flags/gu.png new file mode 100644 index 0000000000..92f37c0533 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gu.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gw.png b/cmd/skywire-visor/static/assets/img/flags/gw.png new file mode 100644 index 0000000000..b37bcf06bf Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/gy.png b/cmd/skywire-visor/static/assets/img/flags/gy.png new file mode 100644 index 0000000000..22cbe2f591 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/gy.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/hk.png b/cmd/skywire-visor/static/assets/img/flags/hk.png new file mode 100644 index 0000000000..d5c380ca9d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/hk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/hm.png b/cmd/skywire-visor/static/assets/img/flags/hm.png new file mode 100644 index 0000000000..a01389a745 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/hm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/hn.png b/cmd/skywire-visor/static/assets/img/flags/hn.png new file mode 100644 index 0000000000..96f838859f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/hn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/hr.png b/cmd/skywire-visor/static/assets/img/flags/hr.png new file mode 100644 index 0000000000..696b515460 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/hr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ht.png b/cmd/skywire-visor/static/assets/img/flags/ht.png new file mode 100644 index 0000000000..416052af77 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ht.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/hu.png b/cmd/skywire-visor/static/assets/img/flags/hu.png new file mode 100644 index 0000000000..7baafe44dd Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/hu.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/id.png b/cmd/skywire-visor/static/assets/img/flags/id.png new file mode 100644 index 0000000000..c6bc0fafac Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/id.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ie.png b/cmd/skywire-visor/static/assets/img/flags/ie.png new file mode 100644 index 0000000000..26baa31e18 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ie.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/il.png b/cmd/skywire-visor/static/assets/img/flags/il.png new file mode 100644 index 0000000000..2ca772d0b7 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/il.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/im.png b/cmd/skywire-visor/static/assets/img/flags/im.png new file mode 100644 index 0000000000..bb68013704 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/im.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/in.png b/cmd/skywire-visor/static/assets/img/flags/in.png new file mode 100644 index 0000000000..e4d7e81a98 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/in.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/io.png b/cmd/skywire-visor/static/assets/img/flags/io.png new file mode 100644 index 0000000000..3e74b6a316 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/io.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/iq.png b/cmd/skywire-visor/static/assets/img/flags/iq.png new file mode 100644 index 0000000000..878a351403 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/iq.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ir.png b/cmd/skywire-visor/static/assets/img/flags/ir.png new file mode 100644 index 0000000000..c5fd136aee Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ir.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/is.png b/cmd/skywire-visor/static/assets/img/flags/is.png new file mode 100644 index 0000000000..b8f6d0f066 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/is.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/it.png b/cmd/skywire-visor/static/assets/img/flags/it.png new file mode 100644 index 0000000000..89692f74f0 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/it.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/je.png b/cmd/skywire-visor/static/assets/img/flags/je.png new file mode 100644 index 0000000000..bef6b9c094 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/je.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/jm.png b/cmd/skywire-visor/static/assets/img/flags/jm.png new file mode 100644 index 0000000000..7be119e03d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/jm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/jo.png b/cmd/skywire-visor/static/assets/img/flags/jo.png new file mode 100644 index 0000000000..11bd4972b6 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/jo.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/jp.png b/cmd/skywire-visor/static/assets/img/flags/jp.png new file mode 100644 index 0000000000..325fbad3ff Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/jp.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ke.png b/cmd/skywire-visor/static/assets/img/flags/ke.png new file mode 100644 index 0000000000..51879adf17 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ke.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/kg.png b/cmd/skywire-visor/static/assets/img/flags/kg.png new file mode 100644 index 0000000000..0a818f67ea Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/kg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/kh.png b/cmd/skywire-visor/static/assets/img/flags/kh.png new file mode 100644 index 0000000000..30f6bb1b9b Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/kh.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ki.png b/cmd/skywire-visor/static/assets/img/flags/ki.png new file mode 100644 index 0000000000..2dcce4b33f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ki.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/km.png b/cmd/skywire-visor/static/assets/img/flags/km.png new file mode 100644 index 0000000000..812b2f56c5 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/km.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/kn.png b/cmd/skywire-visor/static/assets/img/flags/kn.png new file mode 100644 index 0000000000..febd5b486f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/kn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/kp.png b/cmd/skywire-visor/static/assets/img/flags/kp.png new file mode 100644 index 0000000000..d3d509aa87 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/kp.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/kr.png b/cmd/skywire-visor/static/assets/img/flags/kr.png new file mode 100644 index 0000000000..9c0a78eb94 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/kr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/kw.png b/cmd/skywire-visor/static/assets/img/flags/kw.png new file mode 100644 index 0000000000..96546da328 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/kw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ky.png b/cmd/skywire-visor/static/assets/img/flags/ky.png new file mode 100644 index 0000000000..15c5f8e477 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ky.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/kz.png b/cmd/skywire-visor/static/assets/img/flags/kz.png new file mode 100644 index 0000000000..45a8c88742 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/kz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/la.png b/cmd/skywire-visor/static/assets/img/flags/la.png new file mode 100644 index 0000000000..e28acd018a Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/la.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/lb.png b/cmd/skywire-visor/static/assets/img/flags/lb.png new file mode 100644 index 0000000000..d0d452bf86 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/lb.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/lc.png b/cmd/skywire-visor/static/assets/img/flags/lc.png new file mode 100644 index 0000000000..a47d065541 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/lc.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/li.png b/cmd/skywire-visor/static/assets/img/flags/li.png new file mode 100644 index 0000000000..6469909c01 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/li.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/lk.png b/cmd/skywire-visor/static/assets/img/flags/lk.png new file mode 100644 index 0000000000..088aad6db9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/lk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/lr.png b/cmd/skywire-visor/static/assets/img/flags/lr.png new file mode 100644 index 0000000000..89a5bc7e70 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/lr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ls.png b/cmd/skywire-visor/static/assets/img/flags/ls.png new file mode 100644 index 0000000000..33fdef101f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ls.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/lt.png b/cmd/skywire-visor/static/assets/img/flags/lt.png new file mode 100644 index 0000000000..c8ef0da091 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/lt.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/lu.png b/cmd/skywire-visor/static/assets/img/flags/lu.png new file mode 100644 index 0000000000..4cabba98ae Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/lu.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/lv.png b/cmd/skywire-visor/static/assets/img/flags/lv.png new file mode 100644 index 0000000000..49b6998108 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/lv.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ly.png b/cmd/skywire-visor/static/assets/img/flags/ly.png new file mode 100644 index 0000000000..b163a9f8a0 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ly.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ma.png b/cmd/skywire-visor/static/assets/img/flags/ma.png new file mode 100644 index 0000000000..f386770280 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ma.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mc.png b/cmd/skywire-visor/static/assets/img/flags/mc.png new file mode 100644 index 0000000000..1aa830f121 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mc.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/md.png b/cmd/skywire-visor/static/assets/img/flags/md.png new file mode 100644 index 0000000000..4e92c18904 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/md.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/me.png b/cmd/skywire-visor/static/assets/img/flags/me.png new file mode 100644 index 0000000000..ac7253558a Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/me.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mf.png b/cmd/skywire-visor/static/assets/img/flags/mf.png new file mode 100644 index 0000000000..56f4754d06 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mg.png b/cmd/skywire-visor/static/assets/img/flags/mg.png new file mode 100644 index 0000000000..d2715b3d0e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mh.png b/cmd/skywire-visor/static/assets/img/flags/mh.png new file mode 100644 index 0000000000..fb523a8c39 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mh.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mk.png b/cmd/skywire-visor/static/assets/img/flags/mk.png new file mode 100644 index 0000000000..db173aaff2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ml.png b/cmd/skywire-visor/static/assets/img/flags/ml.png new file mode 100644 index 0000000000..2cec8ba440 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ml.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mm.png b/cmd/skywire-visor/static/assets/img/flags/mm.png new file mode 100644 index 0000000000..f464f67ffb Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mn.png b/cmd/skywire-visor/static/assets/img/flags/mn.png new file mode 100644 index 0000000000..9396355db4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mo.png b/cmd/skywire-visor/static/assets/img/flags/mo.png new file mode 100644 index 0000000000..deb801dda2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mo.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mp.png b/cmd/skywire-visor/static/assets/img/flags/mp.png new file mode 100644 index 0000000000..298d588b14 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mp.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mq.png b/cmd/skywire-visor/static/assets/img/flags/mq.png new file mode 100644 index 0000000000..010143b386 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mq.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mr.png b/cmd/skywire-visor/static/assets/img/flags/mr.png new file mode 100644 index 0000000000..319546b100 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ms.png b/cmd/skywire-visor/static/assets/img/flags/ms.png new file mode 100644 index 0000000000..d4cbb433d8 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ms.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mt.png b/cmd/skywire-visor/static/assets/img/flags/mt.png new file mode 100644 index 0000000000..00af94871d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mt.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mu.png b/cmd/skywire-visor/static/assets/img/flags/mu.png new file mode 100644 index 0000000000..b7fdce1bdd Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mu.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mv.png b/cmd/skywire-visor/static/assets/img/flags/mv.png new file mode 100644 index 0000000000..5073d9ec47 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mv.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mw.png b/cmd/skywire-visor/static/assets/img/flags/mw.png new file mode 100644 index 0000000000..13886e9f8b Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mx.png b/cmd/skywire-visor/static/assets/img/flags/mx.png new file mode 100644 index 0000000000..5bc58ab3e3 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mx.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/my.png b/cmd/skywire-visor/static/assets/img/flags/my.png new file mode 100644 index 0000000000..9034cbab2c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/my.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/mz.png b/cmd/skywire-visor/static/assets/img/flags/mz.png new file mode 100644 index 0000000000..76405e063d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/mz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/na.png b/cmd/skywire-visor/static/assets/img/flags/na.png new file mode 100644 index 0000000000..63358c67df Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/na.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/nc.png b/cmd/skywire-visor/static/assets/img/flags/nc.png new file mode 100644 index 0000000000..2cad283782 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/nc.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ne.png b/cmd/skywire-visor/static/assets/img/flags/ne.png new file mode 100644 index 0000000000..d85f424f38 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ne.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/nf.png b/cmd/skywire-visor/static/assets/img/flags/nf.png new file mode 100644 index 0000000000..f9bcdda12c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/nf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ng.png b/cmd/skywire-visor/static/assets/img/flags/ng.png new file mode 100644 index 0000000000..3eea2e0207 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ng.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ni.png b/cmd/skywire-visor/static/assets/img/flags/ni.png new file mode 100644 index 0000000000..3969aaaaee Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ni.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/nl.png b/cmd/skywire-visor/static/assets/img/flags/nl.png new file mode 100644 index 0000000000..fe44791e32 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/nl.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/no.png b/cmd/skywire-visor/static/assets/img/flags/no.png new file mode 100644 index 0000000000..160b6b5b79 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/no.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/np.png b/cmd/skywire-visor/static/assets/img/flags/np.png new file mode 100644 index 0000000000..aeb058b7ea Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/np.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/nr.png b/cmd/skywire-visor/static/assets/img/flags/nr.png new file mode 100644 index 0000000000..705fc337cc Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/nr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/nu.png b/cmd/skywire-visor/static/assets/img/flags/nu.png new file mode 100644 index 0000000000..c3ce4aedda Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/nu.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/nz.png b/cmd/skywire-visor/static/assets/img/flags/nz.png new file mode 100644 index 0000000000..10d6306d17 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/nz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/om.png b/cmd/skywire-visor/static/assets/img/flags/om.png new file mode 100644 index 0000000000..2ffba7e8c4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/om.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pa.png b/cmd/skywire-visor/static/assets/img/flags/pa.png new file mode 100644 index 0000000000..9b2ee9a780 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pa.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pe.png b/cmd/skywire-visor/static/assets/img/flags/pe.png new file mode 100644 index 0000000000..62a04977fb Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pe.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pf.png b/cmd/skywire-visor/static/assets/img/flags/pf.png new file mode 100644 index 0000000000..771a0f6522 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pg.png b/cmd/skywire-visor/static/assets/img/flags/pg.png new file mode 100644 index 0000000000..10d6233496 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ph.png b/cmd/skywire-visor/static/assets/img/flags/ph.png new file mode 100644 index 0000000000..b89e15935d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ph.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pk.png b/cmd/skywire-visor/static/assets/img/flags/pk.png new file mode 100644 index 0000000000..e9df70ca4d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pl.png b/cmd/skywire-visor/static/assets/img/flags/pl.png new file mode 100644 index 0000000000..d413d010b5 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pl.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pm.png b/cmd/skywire-visor/static/assets/img/flags/pm.png new file mode 100644 index 0000000000..ba91d2c7a0 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pn.png b/cmd/skywire-visor/static/assets/img/flags/pn.png new file mode 100644 index 0000000000..aa9344f575 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pr.png b/cmd/skywire-visor/static/assets/img/flags/pr.png new file mode 100644 index 0000000000..82d9130da4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ps.png b/cmd/skywire-visor/static/assets/img/flags/ps.png new file mode 100644 index 0000000000..f5f547762e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ps.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pt.png b/cmd/skywire-visor/static/assets/img/flags/pt.png new file mode 100644 index 0000000000..ece7980150 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pt.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/pw.png b/cmd/skywire-visor/static/assets/img/flags/pw.png new file mode 100644 index 0000000000..6178b254a5 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/pw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/py.png b/cmd/skywire-visor/static/assets/img/flags/py.png new file mode 100644 index 0000000000..cb8723c064 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/py.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/qa.png b/cmd/skywire-visor/static/assets/img/flags/qa.png new file mode 100644 index 0000000000..ed4c621fa7 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/qa.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/re.png b/cmd/skywire-visor/static/assets/img/flags/re.png new file mode 100644 index 0000000000..8332c4ec23 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/re.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ro.png b/cmd/skywire-visor/static/assets/img/flags/ro.png new file mode 100644 index 0000000000..57e74a6510 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ro.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/rs.png b/cmd/skywire-visor/static/assets/img/flags/rs.png new file mode 100644 index 0000000000..9439a5b605 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/rs.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ru.png b/cmd/skywire-visor/static/assets/img/flags/ru.png new file mode 100644 index 0000000000..47da4214fd Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ru.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/rw.png b/cmd/skywire-visor/static/assets/img/flags/rw.png new file mode 100644 index 0000000000..535649178a Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/rw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sa.png b/cmd/skywire-visor/static/assets/img/flags/sa.png new file mode 100644 index 0000000000..b4641c7e8b Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sa.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sb.png b/cmd/skywire-visor/static/assets/img/flags/sb.png new file mode 100644 index 0000000000..a9937ccf09 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sb.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sc.png b/cmd/skywire-visor/static/assets/img/flags/sc.png new file mode 100644 index 0000000000..39ee37184e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sc.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/scotland.png b/cmd/skywire-visor/static/assets/img/flags/scotland.png new file mode 100644 index 0000000000..a0e57b4122 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/scotland.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sd.png b/cmd/skywire-visor/static/assets/img/flags/sd.png new file mode 100644 index 0000000000..eaab69eb78 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sd.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/se.png b/cmd/skywire-visor/static/assets/img/flags/se.png new file mode 100644 index 0000000000..1994653dac Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/se.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sg.png b/cmd/skywire-visor/static/assets/img/flags/sg.png new file mode 100644 index 0000000000..dd34d61210 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sh.png b/cmd/skywire-visor/static/assets/img/flags/sh.png new file mode 100644 index 0000000000..4b1d2a2910 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sh.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/si.png b/cmd/skywire-visor/static/assets/img/flags/si.png new file mode 100644 index 0000000000..bb1476ff5f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/si.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sj.png b/cmd/skywire-visor/static/assets/img/flags/sj.png new file mode 100644 index 0000000000..160b6b5b79 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sj.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sk.png b/cmd/skywire-visor/static/assets/img/flags/sk.png new file mode 100644 index 0000000000..7ccbc8274a Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sl.png b/cmd/skywire-visor/static/assets/img/flags/sl.png new file mode 100644 index 0000000000..12d812d29f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sl.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sm.png b/cmd/skywire-visor/static/assets/img/flags/sm.png new file mode 100644 index 0000000000..3df2fdcf8c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sn.png b/cmd/skywire-visor/static/assets/img/flags/sn.png new file mode 100644 index 0000000000..eabb71db4e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/so.png b/cmd/skywire-visor/static/assets/img/flags/so.png new file mode 100644 index 0000000000..4a1ea4b29b Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/so.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/southossetia.png b/cmd/skywire-visor/static/assets/img/flags/southossetia.png new file mode 100644 index 0000000000..2c0bc3e1b6 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/southossetia.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sr.png b/cmd/skywire-visor/static/assets/img/flags/sr.png new file mode 100644 index 0000000000..5eff9271d2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ss.png b/cmd/skywire-visor/static/assets/img/flags/ss.png new file mode 100644 index 0000000000..e07ec4df0e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ss.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/st.png b/cmd/skywire-visor/static/assets/img/flags/st.png new file mode 100644 index 0000000000..2978557b19 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/st.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sv.png b/cmd/skywire-visor/static/assets/img/flags/sv.png new file mode 100644 index 0000000000..24987990b7 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sv.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sx.png b/cmd/skywire-visor/static/assets/img/flags/sx.png new file mode 100644 index 0000000000..5682b4c777 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sx.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sy.png b/cmd/skywire-visor/static/assets/img/flags/sy.png new file mode 100644 index 0000000000..f5ce30dcb7 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sy.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/sz.png b/cmd/skywire-visor/static/assets/img/flags/sz.png new file mode 100644 index 0000000000..914ee861d4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/sz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tc.png b/cmd/skywire-visor/static/assets/img/flags/tc.png new file mode 100644 index 0000000000..8fc1156bec Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tc.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/td.png b/cmd/skywire-visor/static/assets/img/flags/td.png new file mode 100644 index 0000000000..667f21fd9d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/td.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tf.png b/cmd/skywire-visor/static/assets/img/flags/tf.png new file mode 100644 index 0000000000..80529a4361 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tg.png b/cmd/skywire-visor/static/assets/img/flags/tg.png new file mode 100644 index 0000000000..3aa00ad4df Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/th.png b/cmd/skywire-visor/static/assets/img/flags/th.png new file mode 100644 index 0000000000..dd8ba91719 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/th.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tj.png b/cmd/skywire-visor/static/assets/img/flags/tj.png new file mode 100644 index 0000000000..617bf6455f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tj.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tk.png b/cmd/skywire-visor/static/assets/img/flags/tk.png new file mode 100644 index 0000000000..67b8c8cb51 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tl.png b/cmd/skywire-visor/static/assets/img/flags/tl.png new file mode 100644 index 0000000000..77da181e9c Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tl.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tm.png b/cmd/skywire-visor/static/assets/img/flags/tm.png new file mode 100644 index 0000000000..828020ecd0 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tn.png b/cmd/skywire-visor/static/assets/img/flags/tn.png new file mode 100644 index 0000000000..183cdd3dc9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/to.png b/cmd/skywire-visor/static/assets/img/flags/to.png new file mode 100644 index 0000000000..f89b8ba755 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/to.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tr.png b/cmd/skywire-visor/static/assets/img/flags/tr.png new file mode 100644 index 0000000000..be32f77e99 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tr.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tt.png b/cmd/skywire-visor/static/assets/img/flags/tt.png new file mode 100644 index 0000000000..2a11c1e20a Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tt.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tv.png b/cmd/skywire-visor/static/assets/img/flags/tv.png new file mode 100644 index 0000000000..28274c5fb4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tv.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tw.png b/cmd/skywire-visor/static/assets/img/flags/tw.png new file mode 100644 index 0000000000..f31c654c99 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/tz.png b/cmd/skywire-visor/static/assets/img/flags/tz.png new file mode 100644 index 0000000000..c00ff79614 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/tz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ua.png b/cmd/skywire-visor/static/assets/img/flags/ua.png new file mode 100644 index 0000000000..09563a2194 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ua.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ug.png b/cmd/skywire-visor/static/assets/img/flags/ug.png new file mode 100644 index 0000000000..33f4affade Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ug.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/um.png b/cmd/skywire-visor/static/assets/img/flags/um.png new file mode 100644 index 0000000000..c1dd9654b0 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/um.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/unitednations.png b/cmd/skywire-visor/static/assets/img/flags/unitednations.png new file mode 100644 index 0000000000..08b3dd14f9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/unitednations.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/unknown.png b/cmd/skywire-visor/static/assets/img/flags/unknown.png new file mode 100644 index 0000000000..28961b2d56 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/unknown.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/us.png b/cmd/skywire-visor/static/assets/img/flags/us.png new file mode 100644 index 0000000000..10f451fe85 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/us.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/uy.png b/cmd/skywire-visor/static/assets/img/flags/uy.png new file mode 100644 index 0000000000..31d948a067 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/uy.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/uz.png b/cmd/skywire-visor/static/assets/img/flags/uz.png new file mode 100644 index 0000000000..fef5dc1709 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/uz.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/va.png b/cmd/skywire-visor/static/assets/img/flags/va.png new file mode 100644 index 0000000000..b31eaf225d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/va.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/vc.png b/cmd/skywire-visor/static/assets/img/flags/vc.png new file mode 100644 index 0000000000..8fa17b0612 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/vc.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ve.png b/cmd/skywire-visor/static/assets/img/flags/ve.png new file mode 100644 index 0000000000..00c90f9aff Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ve.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/vg.png b/cmd/skywire-visor/static/assets/img/flags/vg.png new file mode 100644 index 0000000000..4156907986 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/vg.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/vi.png b/cmd/skywire-visor/static/assets/img/flags/vi.png new file mode 100644 index 0000000000..ed26915a32 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/vi.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/vn.png b/cmd/skywire-visor/static/assets/img/flags/vn.png new file mode 100644 index 0000000000..ec7cd48a34 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/vn.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/vu.png b/cmd/skywire-visor/static/assets/img/flags/vu.png new file mode 100644 index 0000000000..b3397bc63d Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/vu.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/wales.png b/cmd/skywire-visor/static/assets/img/flags/wales.png new file mode 100644 index 0000000000..e0d7cee110 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/wales.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/wf.png b/cmd/skywire-visor/static/assets/img/flags/wf.png new file mode 100644 index 0000000000..9f9558734f Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/wf.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ws.png b/cmd/skywire-visor/static/assets/img/flags/ws.png new file mode 100644 index 0000000000..c16950802e Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ws.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/xk.png b/cmd/skywire-visor/static/assets/img/flags/xk.png new file mode 100644 index 0000000000..71a4795033 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/xk.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/ye.png b/cmd/skywire-visor/static/assets/img/flags/ye.png new file mode 100644 index 0000000000..468dfad038 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/ye.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/yt.png b/cmd/skywire-visor/static/assets/img/flags/yt.png new file mode 100644 index 0000000000..c298f378be Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/yt.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/za.png b/cmd/skywire-visor/static/assets/img/flags/za.png new file mode 100644 index 0000000000..57c58e2119 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/za.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/zm.png b/cmd/skywire-visor/static/assets/img/flags/zm.png new file mode 100644 index 0000000000..c25b07beef Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/zm.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/zw.png b/cmd/skywire-visor/static/assets/img/flags/zw.png new file mode 100644 index 0000000000..53c97259b9 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/zw.png differ diff --git a/cmd/skywire-visor/static/assets/img/flags/zz.png b/cmd/skywire-visor/static/assets/img/flags/zz.png new file mode 100644 index 0000000000..c785976595 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/flags/zz.png differ diff --git a/cmd/skywire-visor/static/assets/img/lang/de.png b/cmd/skywire-visor/static/assets/img/lang/de.png new file mode 100644 index 0000000000..4d2d258590 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/lang/de.png differ diff --git a/cmd/skywire-visor/static/assets/img/lang/en.png b/cmd/skywire-visor/static/assets/img/lang/en.png new file mode 100644 index 0000000000..bb03eaaae4 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/lang/en.png differ diff --git a/cmd/skywire-visor/static/assets/img/lang/es.png b/cmd/skywire-visor/static/assets/img/lang/es.png new file mode 100644 index 0000000000..4590656ace Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/lang/es.png differ diff --git a/cmd/skywire-visor/static/assets/img/logo-s.png b/cmd/skywire-visor/static/assets/img/logo-s.png new file mode 100644 index 0000000000..e5d6aa1dc6 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/logo-s.png differ diff --git a/cmd/skywire-visor/static/assets/img/logo-v.png b/cmd/skywire-visor/static/assets/img/logo-v.png new file mode 100644 index 0000000000..73db57b8f2 Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/logo-v.png differ diff --git a/cmd/skywire-visor/static/assets/img/modal-background-pattern.png b/cmd/skywire-visor/static/assets/img/modal-background-pattern.png new file mode 100644 index 0000000000..33f259744b Binary files /dev/null and b/cmd/skywire-visor/static/assets/img/modal-background-pattern.png differ diff --git a/cmd/skywire-visor/static/assets/scripts/terminal.js b/cmd/skywire-visor/static/assets/scripts/terminal.js new file mode 100644 index 0000000000..27601b16ea --- /dev/null +++ b/cmd/skywire-visor/static/assets/scripts/terminal.js @@ -0,0 +1,200 @@ +/*! terminal.js v2.0 | (c) 2014 Erik Österberg | https://github.com/eosterberg/terminaljs */ + +var Terminal = (function () { + // PROMPT_TYPE + var PROMPT_INPUT = 1, PROMPT_PASSWORD = 2, PROMPT_CONFIRM = 3 + + var fireCursorInterval = function (inputField, terminalObj) { + var cursor = terminalObj._cursor + setTimeout(function () { + if (inputField.parentElement && terminalObj._shouldBlinkCursor) { + cursor.style.visibility = cursor.style.visibility === 'visible' ? 'hidden' : 'visible' + fireCursorInterval(inputField, terminalObj) + } else { + cursor.style.visibility = 'visible' + } + }, 500) + } + + var firstPrompt = true; + var inputField; + promptInput = function (terminalObj, message, PROMPT_TYPE, callback) { + var shouldDisplayInput = (PROMPT_TYPE === PROMPT_INPUT) + inputField = document.createElement('input') + + inputField.style.position = 'absolute' + inputField.style.zIndex = '-100' + inputField.style.outline = 'none' + inputField.style.border = 'none' + inputField.style.opacity = '0' + inputField.style.fontSize = '0.2em' + + terminalObj._inputLine.textContent = '' + terminalObj._input.style.display = 'block' + terminalObj.html.appendChild(inputField) + fireCursorInterval(inputField, terminalObj) + + if (message.length) terminalObj.print(PROMPT_TYPE === PROMPT_CONFIRM ? message + ' (y/n)' : message, true) + + inputField.onblur = function () { + terminalObj._cursor.style.opacity = 0; + } + + inputField.onfocus = function () { + inputField.value = terminalObj._inputLine.textContent + terminalObj._cursor.style.display = 'inline' + terminalObj._cursor.style.opacity = 1; + } + + terminalObj.html.onclick = function () { + inputField.focus() + } + + inputField.onkeydown = function (e) { + if (e.which === 37 || e.which === 39 || e.which === 38 || e.which === 40 || e.which === 9) { + e.preventDefault() + } else if (shouldDisplayInput && e.which !== 13) { + setTimeout(function () { + terminalObj._inputLine.textContent = inputField.value + }, 1) + } + } + inputField.onkeyup = function (e) { + if (PROMPT_TYPE === PROMPT_CONFIRM || e.which === 13) { + terminalObj._input.style.display = 'none' + var inputValue = inputField.value + if (shouldDisplayInput) terminalObj.print(inputValue) + terminalObj.html.removeChild(inputField) + inputField = undefined; + if (typeof(callback) === 'function') { + if (PROMPT_TYPE === PROMPT_CONFIRM) { + callback(inputValue.toUpperCase()[0] === 'Y' ? true : false) + } else callback(inputValue) + } + } + } + if (firstPrompt) { + firstPrompt = false + setTimeout(function () { inputField.focus() }, 50) + } else { + inputField.focus() + } + } + + var TerminalConstructor = function (id) { + + this.html = document.createElement('div') + this.html.className = 'Terminal' + if (typeof(id) === 'string') { this.html.id = id } + + this._innerWindow = document.createElement('div') + this._output = document.createElement('p') + this._inputLine = document.createElement('span') //the span element where the users input is put + this._cursor = document.createElement('span') + this._input = document.createElement('p') //the full element administering the user input, including cursor + + this._shouldBlinkCursor = true + + this.print = function (message, useColor) { + var newLine = document.createElement('div') + newLine.innerHTML = message + this._output.appendChild(newLine) + + if (useColor) { + newLine.style.color = '#00bd00'; + } + } + + this.input = function (message, callback) { + promptInput(this, message, PROMPT_INPUT, callback) + } + + this.changeInputContent = function (newContent) { + if (inputField && this._inputLine) { + try { + inputField.value = newContent; + this._inputLine.textContent = newContent + } catch (e) {} + } + } + + this.getInputContent = function () { + if (inputField) { + return inputField.value; + } + + return ''; + } + + this.hasFocus = function () { + return inputField && document.activeElement === inputField; + } + + this.password = function (message, callback) { + promptInput(this, message, PROMPT_PASSWORD, callback) + } + + this.confirm = function (message, callback) { + promptInput(this, message, PROMPT_CONFIRM, callback) + } + + this.clear = function () { + this._output.innerHTML = '' + } + + this.sleep = function (milliseconds, callback) { + setTimeout(callback, milliseconds) + } + + this.setTextSize = function (size) { + this._output.style.fontSize = size + this._input.style.fontSize = size + } + + this.setTextColor = function (col) { + this.html.style.color = col + this._cursor.style.background = col + } + + this.setBackgroundColor = function (col) { + this.html.style.background = col + } + + this.setWidth = function (width) { + this.html.style.width = width + } + + this.setHeight = function (height) { + this.html.style.height = height + } + + this.blinkingCursor = function (bool) { + bool = bool.toString().toUpperCase() + this._shouldBlinkCursor = (bool === 'TRUE' || bool === '1' || bool === 'YES') + } + + this._input.appendChild(this._inputLine) + this._input.appendChild(this._cursor) + this._innerWindow.appendChild(this._output) + this._innerWindow.appendChild(this._input) + this.html.appendChild(this._innerWindow) + + this.setBackgroundColor('black') + this.setTextColor('white') + this.setTextSize('1em') + this.setWidth('100%') + this.setHeight('100%') + + this.html.style.fontFamily = 'Monaco, Courier' + this.html.style.margin = '0' + this._innerWindow.style.padding = '10px' + this._input.style.margin = '0' + this._output.style.margin = '0' + this._cursor.style.background = 'white' + this._cursor.innerHTML = 'C' //put something in the cursor.. + this._cursor.style.display = 'none' //then hide it + this._input.style.display = 'none' + } + + return TerminalConstructor +}()) \ No newline at end of file diff --git a/cmd/skywire-visor/static/assets/scss/_backgrounds.scss b/cmd/skywire-visor/static/assets/scss/_backgrounds.scss new file mode 100644 index 0000000000..d824c249fe --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_backgrounds.scss @@ -0,0 +1,42 @@ +// Main app background. +.app-background { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: fixed; + background: linear-gradient($blue-dark-Background1, $blue-dark-Background2) no-repeat fixed !important; + box-shadow: inset 0 0 200px 0 rgba(96, 141, 205, 0.25); +} + +.no-gradient-for-elevated-box { + box-shadow: 5px 5px 7px 0 rgba(0, 0, 0, 0.35) ! important; +} + +.elevated-box { + background-image: url('/assets/img/background-pattern.png'); + box-shadow: inset 0 0 55px 0 rgba(53, 87, 134, 0.4), 5px 5px 7px 0 rgba(0, 0, 0, 0.35); + border: $box-border solid 1px; +} + +.rounded-elevated-box { + width: 100%; + @extend .elevated-box; + border-radius: $mat-dialog-radius; + overflow: hidden; + padding: 3px; + + .box-internal-container { + border-radius: $mat-dialog-radius; + padding: $containers-padding - 3px; + border: scale-color($box-border, $alpha: -65%) solid 1px; + overflow: hidden; + } +} + +.small-rounded-elevated-box { + @extend .rounded-elevated-box; + width: unset; + padding: 0; + box-shadow: inset 0 0 20px 0 rgba(53, 87, 134, 0.4), 5px 5px 7px 0 rgba(0, 0, 0, 0.35); +} diff --git a/cmd/skywire-visor/static/assets/scss/_bootstrap_overrides.scss b/cmd/skywire-visor/static/assets/scss/_bootstrap_overrides.scss new file mode 100644 index 0000000000..52f7285049 --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_bootstrap_overrides.scss @@ -0,0 +1,11 @@ +// Theme colors +$theme-color-interval: 8%; + +// Grid +$grid-breakpoints: ( + xs: 0, + sm: 576px, + md: 768px, + lg: 992px, + xl: 1300px +) !default; diff --git a/cmd/skywire-visor/static/assets/scss/_dialogs.scss b/cmd/skywire-visor/static/assets/scss/_dialogs.scss new file mode 100644 index 0000000000..5044092b5c --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_dialogs.scss @@ -0,0 +1,71 @@ +// Modal windows. +mat-dialog-container.mat-dialog-container { + border-radius: $mat-dialog-radius !important; + padding: $mat-dialog-padding !important; + + background-image: url('/assets/img/modal-background-pattern.png'); + box-shadow: inset 0 0 100px 0 rgba(255, 255, 255, 0.5), 5px 5px 15px 0 rgba(0, 0, 0, 1); + background-color: $modal-background; +} + +.mat-dialog-content { + margin-bottom: -$mat-dialog-padding !important; +} + +app-dialog { + app-loading-indicator { + margin-top: 32px; + margin-bottom: 24px; + } +} + +// Global styles for the modal windows that display a list of options from which the user +// can select one. +.options-list-button-container { + margin: 0 (-$mat-dialog-padding); + + button { + width: 100%; + + .internal-container { + text-align: left; + padding: 5px 7px; + @extend .single-line; + } + + mat-icon { + margin-right: 10px; + position: relative; + top: 2px; + opacity: 0.5; + } + } +} + +// Global styles for the modal windows that display the details of something. +.info-dialog { + word-break: break-all; + font-size: $font-size-sm; + color: $black; + + .title { + margin-bottom: 2px; + font-size: $font-size-base; + margin-top: 25px; + color: $blue-medium; + + mat-icon { + margin-right: 5px; + position: relative; + top: 2px; + } + } + + .item { + margin-top: 2px; + + span { + color: $lighter-gray; + } + } +} diff --git a/cmd/skywire-visor/static/assets/scss/_fonts.scss b/cmd/skywire-visor/static/assets/scss/_fonts.scss new file mode 100644 index 0000000000..b318293385 --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_fonts.scss @@ -0,0 +1,25 @@ +@import "assets/fonts/material-icons/material-icons.css"; + +@font-face { + font-family: 'Skycoin'; + font-style: normal; + font-weight: 300; + src: url('/assets/fonts/skycoin/skycoin-light-webfont.woff2') format('woff2'), + url('/assets/fonts/skycoin/skycoin-light-webfont.woff') format('woff'); +} + +@font-face { + font-family: 'Skycoin'; + font-style: normal; + font-weight: 400; + src: url('/assets/fonts/skycoin/skycoin-regular-webfont.woff2') format('woff2'), + url('/assets/fonts/skycoin/skycoin-regular-webfont.woff') format('woff'); +} + +@font-face { + font-family: 'Skycoin'; + font-style: normal; + font-weight: 700; + src: url('/assets/fonts/skycoin/skycoin-bold-webfont.woff2') format('woff2'), + url('/assets/fonts/skycoin/skycoin-bold-webfont.woff') format('woff'); +} diff --git a/cmd/skywire-visor/static/assets/scss/_forms.scss b/cmd/skywire-visor/static/assets/scss/_forms.scss new file mode 100644 index 0000000000..128c4ca190 --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_forms.scss @@ -0,0 +1,36 @@ +mat-form-field { + display: block !important; +} + +// White form fields, to be shown with the dark background. +.white-form-field { + color: $white; + + .mat-select-value-text, .mat-form-field-label, .mat-select-value, .mat-select-arrow { + color: $white !important; + } + + .mat-form-field-underline { + background-color: scale-color($white, $alpha: -50%) !important; + } + + .mat-form-field-ripple { + background-color: $white !important; + } + + .mat-input-element { + caret-color: $white; + } +} + +// Container for the white help icons shown in the forms, to be shown with the dark background. +.form-help-icon-container { + height: 0px; + text-align: right; + color: $blue-medium; +} + +.white-form-help-icon-container { + @extend .form-help-icon-container; + color: scale-color($white, $alpha: -20%); +} diff --git a/cmd/skywire-visor/static/assets/scss/_icons.scss b/cmd/skywire-visor/static/assets/scss/_icons.scss new file mode 100644 index 0000000000..42dfa3245c --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_icons.scss @@ -0,0 +1,51 @@ +// Solid circles +$dot-icons: ( + green: theme-color(green), + red: theme-color(red), + yellow: theme-color(yellow), +); + +$dot-size: 10px; +$dot-size-sm: 7px; + +@each $color-name, $color-value in $dot-icons +{ + .dot-#{$color-name} + { + height: $dot-size; + width: $dot-size; + background-color: $color-value; + border-radius: 50%; + display: inline-block; + + &.sm + { + height: $dot-size-sm; + width: $dot-size-sm; + } + } +} + +// Circle outlines +$outlines: ( + white: theme-color(white), + gray: theme-color(light-gray) +); + +@each $color-name, $color-value in $outlines +{ + .dot-outline-#{$color-name} + { + height: $dot-size; + width: $dot-size; + border-radius: 50%; + border: solid 1px $color-value; + display: inline-block; + + &.sm + { + height: $dot-size-sm; + width: $dot-size-sm; + } + } +} diff --git a/cmd/skywire-visor/static/assets/scss/_menu.scss b/cmd/skywire-visor/static/assets/scss/_menu.scss new file mode 100644 index 0000000000..361703f043 --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_menu.scss @@ -0,0 +1,9 @@ +// Dropdown menus. +.mat-menu-panel { + border-radius: $mat-dialog-radius !important; + max-width: none !important; +} + +.mat-menu-item { + width: auto !important; +} diff --git a/cmd/skywire-visor/static/assets/scss/_responsive_tables.scss b/cmd/skywire-visor/static/assets/scss/_responsive_tables.scss new file mode 100644 index 0000000000..c6f944fd23 --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_responsive_tables.scss @@ -0,0 +1,296 @@ +// Backgrounds for the tables used in the app. +$responsive-table-colors: ( + // Background, background:hover, font color + translucid: (transparent, theme-color(translucid-hover), theme-color(white)), +); + +// Create styles for the tables. One per background color. +@each $name, $colors in $responsive-table-colors { + + .responsive-table-#{$name} { + background: nth($colors, 1) !important; + margin-left: auto; + margin-right: auto; + border-collapse: separate !important; + width: 100%; + word-break: break-all; + color: nth($colors, 3) !important; + + td, th { + color: nth($colors, 3) !important; + padding: 12px 10px !important; + border-bottom: 1px solid $separator; + } + + th { + font-size: $font-size-sm !important; + font-weight: bold; + @include text-truncate; + height: 48px; + } + + td { + font-size: $font-size-smaller !important; + font-weight: $font-weight-light !important; + } + + tr { + .sortable-column { + @extend .selectable; + + mat-icon { + display: inline; + position: relative; + top: 2px; + } + } + } + + // Column used for the check boxes. + .selection-col { + width: 30px; + + .mat-checkbox { + vertical-align: super; + } + } + + .action-button { + width: 28px; + height: 28px; + line-height: 16px; + font-size: 16px; + margin-right: 5px; + + &:last-child { + margin-right: 0; + } + } + + .big-action-button { + @extend .action-button; + line-height: 18px; + font-size: 18px; + } + + .selectable { + cursor: pointer; + + &:hover + { + background: nth($colors, 2) !important; + } + } + + mat-checkbox { + >label { + margin-bottom: 0; + } + + .mat-checkbox-background, .mat-checkbox-frame { + box-sizing: border-box; + width: 18px; + height: 18px; + background: rgba(0, 0, 0, 0.3) !important; + border-radius: 6px; + border-width: 2px; + border-color: rgba(0, 0, 0, 0.5); + } + + .mat-ripple-element { + background-color: rgba(255, 255, 255, 0.10) !important; + } + } + + // Elements used in the lists for small screens. + .list-item-container { + display: flex; + padding: 10px 15px; + padding-right: 0px; + + // Checkbox area. + .check-part { + width: 50px; + flex-shrink: 0; + margin-left: -20px; + + mat-checkbox { + >label { + width: 50px; + height: 50px; + padding-left: 20px; + + .mat-checkbox-inner-container { + margin: 0 !important; + } + } + } + } + + // Content area. + .left-part { + flex-grow: 1; + + .list-row { + margin-bottom: 5px; + word-break: break-word; + + &:last-of-type { + margin-bottom: 0px; + } + } + + .long-content { + word-break: break-all; + } + } + + .margin-part { + width: 5px; + height: 5px; + flex-shrink: 0; + } + + // Options button area. + .right-part { + width: 60px; + text-align: center; + flex-shrink: 0; + + button { + width: 60px; + height: 60px; + } + + mat-icon { + display: inline; + font-size: 20px; + } + } + } + + .title { + font-size: $font-size-sm !important; + font-weight: bold; + } + } +} + +// Styles for the headers shown above most of the tables. +.generic-title-container { + @media (min-width: map-get($grid-breakpoints, md)) { + & { + padding-right: 5px; + } + } + + @media (max-width: (map-get($grid-breakpoints, md) - 1)) { + & { + margin-right: -15px; + } + } + + .title { + margin-right: auto; + font-size: $font-size-base; + font-weight: bold; + + @media (min-width: map-get($grid-breakpoints, md)) { + & { + margin-left: 1.25rem !important; + } + } + + .filter-label { + font-size: $font-size-mini; + font-weight: lighter; + } + + .help { + opacity: 0.5; + font-size: 14px; + cursor: default; + } + } + + .icon-button { + display: flex; + line-height: 18px !important; + margin-right: 15px; + background: $white; + color: $blue-dark; + border-radius: 1000px; + cursor: pointer; + padding: 1px 7px; + font-weight: normal; + border: 0; + font-size: $font-size-smaller; + align-items: center; + + @extend .subtle-transparent-button; + + mat-icon { + margin-right: 2px; + font-size: 18px; + height: auto; + width: auto; + } + + @media (max-width: (map-get($grid-breakpoints, md) - 1)) { + padding: 1px 10px; + line-height: 24px !important; + font-size: $font-size-sm !important; + + mat-icon { + margin-right: 3px; + font-size: 22px; + } + } + } + + .options { + text-align: right; + + .options-container { + text-align: right; + display: inline-flex; + + > mat-icon { + width: 18px !important; + height: 18px !important; + line-height: 18px !important; + font-size: 18px !important; + + margin-right: 15px; + background: $white; + color: $blue-dark; + border-radius: 1000px; + cursor: pointer; + + @extend .subtle-transparent-button; + + @media (max-width: (map-get($grid-breakpoints, md) - 1)) { + & { + width: 24px !important; + height: 24px !important; + line-height: 24px !important; + font-size: 24px !important; + } + } + } + + .small-icon { + font-size: 14px !important; + text-align: center; + } + } + } +} + +// Allows to remove the margin at the right of the last mat-icon element inside +// generic-title-container, to make it be shown correctly when there is a paginator. +.paginator-icons-fixer { + mat-icon:last-of-type { + margin-right: 0 !important; + } +} diff --git a/cmd/skywire-visor/static/assets/scss/_text.scss b/cmd/skywire-visor/static/assets/scss/_text.scss new file mode 100644 index 0000000000..8e653f146d --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_text.scss @@ -0,0 +1,35 @@ +span { + overflow-wrap: break-word; +} + +.font-sm { + font-size: $font-size-sm !important; + font-weight: $font-weight-light !important; +} + +.font-smaller { + font-size: $font-size-smaller !important; + font-weight: $font-weight-light !important; +} + +.uppercase { + text-transform: uppercase; +} + +.single-line { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.green-text { + color: $green; +} + +.yellow-text { + color: $yellow; +} + +.red-text { + color: $red; +} diff --git a/cmd/skywire-visor/static/assets/scss/_variables.scss b/cmd/skywire-visor/static/assets/scss/_variables.scss new file mode 100644 index 0000000000..5b13f3b8dd --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/_variables.scss @@ -0,0 +1,69 @@ +// +// Colors +// + +$white: #F8F9F9; +$black: #202226; + +$blue-medium: #215f9e; +$blue-dark: #154B6C; +$blue-dark-Background1: #060a10; +$blue-dark-Background2: #0a1421; + +$red: #DA3439; +$green: #2ECC54; +$yellow: #d48b05; +$light-gray: #777; +$lighter-gray: #999; + +$modal-background: #e0e5ec; +$modal-separator: scale-color($blue-medium, $alpha: -80%); + +$box-border: rgba(156, 197, 255, 0.33); +$separator: rgba(255, 255, 255, 0.15); +$grey-separator: rgba(0, 0, 0, 0.12); + +$theme-colors: ( + green: $green, + red: $red, + yellow: $yellow, + translucid-hover: rgba(0, 0, 0, 0.2), + white: $white, + light-gray: $light-gray +); + +// +// Fonts +// + +$font-size-base: 1rem; // Assumes the browser default, typically `16px` +$font-size-lg: ($font-size-base * 1.25); +$font-size-sm: ($font-size-base * .875); +$font-size-smaller: ($font-size-base * .8); +$font-size-mini: ($font-size-base * .70); +$font-size-mini-plus: ($font-size-base * .60); + +$font-weight-light: lighter; +$font-weight-bold: 700; + +// +// Typography +// + +$skywire-font-family: 'Skycoin'; + +// +// Dialog +// +$mat-dialog-padding: 24px; +$mat-dialog-radius: 10px; + +// +// Container +// +$containers-padding: 15px; + +// +// Sizes +// +$header-buttons-height: 40px; diff --git a/cmd/skywire-visor/static/assets/scss/utilities/_utilities.scss b/cmd/skywire-visor/static/assets/scss/utilities/_utilities.scss new file mode 100644 index 0000000000..03c99a7cb2 --- /dev/null +++ b/cmd/skywire-visor/static/assets/scss/utilities/_utilities.scss @@ -0,0 +1,72 @@ +@import "bootstrap_overrides"; + +// General utilities for the app. + +.cursor-pointer { + cursor: pointer; +} + +.reactivate-mouse { + touch-action: initial !important; + user-select: initial !important; + -webkit-user-drag: auto !important; + -webkit-tap-highlight-color: initial !important; +} + +.mouse-disabled { + pointer-events: none; +} + +.clearfix::after { + content: ''; + display: block; + clear: both; +} + +.mt-4\.5 { + margin-top: 2rem !important; +} + +.highlight-internal-icon { + @extend .cursor-pointer; + + mat-icon { + opacity: 0.5; + } + + &:hover { + mat-icon { + opacity: 0.8; + } + } +} + +.transparent-button { + opacity: 0.5; + + &:hover { + opacity: 1; + } +} + +.subtle-transparent-button { + opacity: 0.85; + + &:hover { + opacity: 1; + } +} + +// Controls the padding of the elements in the main area when a details bar is shown at the left. +@media (max-width: (map-get($grid-breakpoints, md) - 1)) , (min-width: map-get($grid-breakpoints, lg)) and (max-width: (map-get($grid-breakpoints, xl) - 1)) { + .small-node-list-margins { + padding: 0 !important; + } +} + +// Controls the padding of the elements in the main area when no details bar is shown at the left. +@media (max-width: (map-get($grid-breakpoints, md) - 1)) { + .full-node-list-margins { + padding: 0 !important; + } +} diff --git a/cmd/skywire-visor/static/favicon.ico b/cmd/skywire-visor/static/favicon.ico new file mode 100644 index 0000000000..cc325fd3cb Binary files /dev/null and b/cmd/skywire-visor/static/favicon.ico differ diff --git a/cmd/skywire-visor/static/index.html b/cmd/skywire-visor/static/index.html new file mode 100644 index 0000000000..6bbd231f9e --- /dev/null +++ b/cmd/skywire-visor/static/index.html @@ -0,0 +1,15 @@ + + + + + Skywire Manager + + + + + + +
      + + + diff --git a/cmd/skywire-visor/static/main.582d146b280cec4141cf.js b/cmd/skywire-visor/static/main.582d146b280cec4141cf.js new file mode 100644 index 0000000000..2b59b2ff01 --- /dev/null +++ b/cmd/skywire-visor/static/main.582d146b280cec4141cf.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[1],{"+s0g":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),i=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,i){return t?/-MMM-/.test(i)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"//9w":function(t,e,n){!function(t){"use strict";t.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},"/X5v":function(t,e,n){!function(t){"use strict";t.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},0:function(t,e,n){t.exports=n("zUnb")},"0mo+":function(t,e,n){!function(t){"use strict";var e={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},n={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};t.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(t){return t.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===e&&t>=4||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===e&&t<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":t<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":t<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":t<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}})}(n("wd/R"))},"0tRk":function(t,e,n){!function(t){"use strict";t.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"})}(n("wd/R"))},"1rYy":function(t,e,n){!function(t){"use strict";t.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(t){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(t)},meridiem:function(t){return t<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":t<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":t<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(t,e){switch(e){case"DDD":case"w":case"W":case"DDDo":return 1===t?t+"-\u056b\u0576":t+"-\u0580\u0564";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},"1xZ4":function(t,e,n){!function(t){"use strict";t.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(t,e){var n=1===t?"r":2===t?"n":3===t?"r":4===t?"t":"\xe8";return"w"!==e&&"W"!==e||(n="a"),t+n},week:{dow:1,doy:4}})}(n("wd/R"))},"2UWG":function(t,e,n){"use strict";var i=n("CDJp"),r=n("K2E3");function a(t){return void 0!==t._view.width}function o(t){var e,n,i,r,o=t._view;if(a(t)){var s=o.width/2;e=o.x-s,n=o.x+s,i=Math.min(o.y,o.base),r=Math.max(o.y,o.base)}else{var l=o.height/2;e=Math.min(o.x,o.base),n=Math.max(o.x,o.base),i=o.y-l,r=o.y+l}return{left:e,top:i,right:n,bottom:r}}i._set("global",{elements:{rectangle:{backgroundColor:i.global.defaultColor,borderColor:i.global.defaultColor,borderSkipped:"bottom",borderWidth:0}}}),t.exports=r.extend({draw:function(){var t,e,n,i,r,a,o,s=this._chart.ctx,l=this._view,u=l.borderWidth;if(l.horizontal?(n=l.y-l.height/2,i=l.y+l.height/2,r=(e=l.x)>(t=l.base)?1:-1,a=1,o=l.borderSkipped||"left"):(t=l.x-l.width/2,e=l.x+l.width/2,r=1,a=(i=l.base)>(n=l.y)?1:-1,o=l.borderSkipped||"bottom"),u){var c=Math.min(Math.abs(t-e),Math.abs(n-i)),d=(u=u>c?c:u)/2,h=t+("left"!==o?d*r:0),f=e+("right"!==o?-d*r:0),p=n+("top"!==o?d*a:0),m=i+("bottom"!==o?-d*a:0);h!==f&&(n=p,i=m),p!==m&&(t=h,e=f)}s.beginPath(),s.fillStyle=l.backgroundColor,s.strokeStyle=l.borderColor,s.lineWidth=u;var g=[[t,i],[t,n],[e,n],[e,i]],v=["bottom","left","top","right"].indexOf(o,0);function _(t){return g[(v+t)%4]}-1===v&&(v=0);var y=_(0);s.moveTo(y[0],y[1]);for(var b=1;b<4;b++)y=_(b),s.lineTo(y[0],y[1]);s.fill(),u&&s.stroke()},height:function(){var t=this._view;return t.base-t.y},inRange:function(t,e){var n=!1;if(this._view){var i=o(this);n=t>=i.left&&t<=i.right&&e>=i.top&&e<=i.bottom}return n},inLabelRange:function(t,e){if(!this._view)return!1;var n=o(this);return a(this)?t>=n.left&&t<=n.right:e>=n.top&&e<=n.bottom},inXRange:function(t){var e=o(this);return t>=e.left&&t<=e.right},inYRange:function(t){var e=o(this);return t>=e.top&&t<=e.bottom},getCenterPoint:function(){var t,e,n=this._view;return a(this)?(t=n.x,e=(n.y+n.base)/2):(t=(n.x+n.base)/2,e=n.y),{x:t,y:e}},getArea:function(){var t=this._view;return t.width*Math.abs(t.y-t.base)},tooltipPosition:function(){var t=this._view;return{x:t.x,y:t.y}}})},"2fjn":function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}}})}(n("wd/R"))},"2ykv":function(t,e,n){!function(t){"use strict";var e="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),n="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),i=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],r=/^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;t.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(t,i){return t?/-MMM-/.test(i)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},"35yf":function(t,e,n){"use strict";n("CDJp")._set("scatter",{hover:{mode:"single"},scales:{xAxes:[{id:"x-axis-1",type:"linear",position:"bottom"}],yAxes:[{id:"y-axis-1",type:"linear",position:"left"}]},showLines:!1,tooltips:{callbacks:{title:function(){return""},label:function(t){return"("+t.xLabel+", "+t.yLabel+")"}}}}),t.exports=function(t){t.controllers.scatter=t.controllers.line}},"3E1r":function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};t.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(t){return t.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924"===e?t<4?t:t+12:"\u0938\u0941\u092c\u0939"===e?t:"\u0926\u094b\u092a\u0939\u0930"===e?t>=10?t:t+12:"\u0936\u093e\u092e"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0930\u093e\u0924":t<10?"\u0938\u0941\u092c\u0939":t<17?"\u0926\u094b\u092a\u0939\u0930":t<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}})}(n("wd/R"))},"4MV3":function(t,e,n){!function(t){"use strict";var e={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},n={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};t.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(t){return t.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0ab0\u0abe\u0aa4"===e?t<4?t:t+12:"\u0ab8\u0ab5\u0abe\u0ab0"===e?t:"\u0aac\u0aaa\u0acb\u0ab0"===e?t>=10?t:t+12:"\u0ab8\u0abe\u0a82\u0a9c"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0ab0\u0abe\u0aa4":t<10?"\u0ab8\u0ab5\u0abe\u0ab0":t<17?"\u0aac\u0aaa\u0acb\u0ab0":t<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}})}(n("wd/R"))},"4dOw":function(t,e,n){!function(t){"use strict";t.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},"5ZZ7":function(t,e,n){"use strict";var i=n("CDJp"),r=n("vvH+"),a=n("RDha");i._set("polarArea",{scale:{type:"radialLinear",angleLines:{display:!1},gridLines:{circular:!0},pointLabels:{display:!1},ticks:{beginAtZero:!0}},animation:{animateRotate:!0,animateScale:!0},startAngle:-.5*Math.PI,legendCallback:function(t){var e=[];e.push('
        ');var n=t.data,i=n.datasets,r=n.labels;if(i.length)for(var a=0;a'),r[a]&&e.push(r[a]),e.push("");return e.push("
      "),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,i){var r=t.getDatasetMeta(0),o=e.datasets[0],s=r.data[i].custom||{},l=a.valueAtIndexOrDefault,u=t.options.elements.arc;return{text:n,fillStyle:s.backgroundColor?s.backgroundColor:l(o.backgroundColor,i,u.backgroundColor),strokeStyle:s.borderColor?s.borderColor:l(o.borderColor,i,u.borderColor),lineWidth:s.borderWidth?s.borderWidth:l(o.borderWidth,i,u.borderWidth),hidden:isNaN(o.data[i])||r.data[i].hidden,index:i}})):[]}},onClick:function(t,e){var n,i,r,a=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n0&&!isNaN(t)?2*Math.PI/e:0}})}},"5ey7":function(t,e,n){var i={"./de.json":["K+GZ",5],"./de_base.json":["KPjT",6],"./en.json":["amrp",7],"./es.json":["ZF/7",8],"./es_base.json":["bIFx",9]};function r(t){if(!n.o(i,t))return Promise.resolve().then((function(){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}));var e=i[t],r=e[0];return n.e(e[1]).then((function(){return n.t(r,3)}))}r.keys=function(){return Object.keys(i)},r.id="5ey7",t.exports=r},"6+QB":function(t,e,n){!function(t){"use strict";t.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},"6B0Y":function(t,e,n){!function(t){"use strict";var e={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},n={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};t.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(t){return"\u179b\u17d2\u1784\u17b6\u1785"===t},meridiem:function(t,e,n){return t<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(t){return t.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},"6rqY":function(t,e,n){"use strict";var i=n("CDJp"),r=n("RDha"),a=n("mlr9"),o=n("fELs"),s=n("iM7B"),l=n("VgNv");t.exports=function(t){function e(e){var n=e.options;r.each(e.scales,(function(t){o.removeBox(e,t)})),n=r.configMerge(t.defaults.global,t.defaults[e.config.type],n),e.options=e.config.options=n,e.ensureScalesHaveIDs(),e.buildOrUpdateScales(),e.tooltip._options=n.tooltips,e.tooltip.initialize()}function n(t){return"top"===t||"bottom"===t}t.types={},t.instances={},t.controllers={},r.extend(t.prototype,{construct:function(e,n){var a=this;n=function(t){var e=(t=t||{}).data=t.data||{};return e.datasets=e.datasets||[],e.labels=e.labels||[],t.options=r.configMerge(i.global,i[t.type],t.options||{}),t}(n);var o=s.acquireContext(e,n),l=o&&o.canvas,u=l&&l.height,c=l&&l.width;a.id=r.uid(),a.ctx=o,a.canvas=l,a.config=n,a.width=c,a.height=u,a.aspectRatio=u?c/u:null,a.options=n.options,a._bufferedRender=!1,a.chart=a,a.controller=a,t.instances[a.id]=a,Object.defineProperty(a,"data",{get:function(){return a.config.data},set:function(t){a.config.data=t}}),o&&l?(a.initialize(),a.update()):console.error("Failed to create chart: can't acquire context from the given item")},initialize:function(){var t=this;return l.notify(t,"beforeInit"),r.retinaScale(t,t.options.devicePixelRatio),t.bindEvents(),t.options.responsive&&t.resize(!0),t.ensureScalesHaveIDs(),t.buildOrUpdateScales(),t.initToolTip(),l.notify(t,"afterInit"),t},clear:function(){return r.canvas.clear(this),this},stop:function(){return t.animationService.cancelAnimation(this),this},resize:function(t){var e=this,n=e.options,i=e.canvas,a=n.maintainAspectRatio&&e.aspectRatio||null,o=Math.max(0,Math.floor(r.getMaximumWidth(i))),s=Math.max(0,Math.floor(a?o/a:r.getMaximumHeight(i)));if((e.width!==o||e.height!==s)&&(i.width=e.width=o,i.height=e.height=s,i.style.width=o+"px",i.style.height=s+"px",r.retinaScale(e,n.devicePixelRatio),!t)){var u={width:o,height:s};l.notify(e,"resize",[u]),e.options.onResize&&e.options.onResize(e,u),e.stop(),e.update(e.options.responsiveAnimationDuration)}},ensureScalesHaveIDs:function(){var t=this.options,e=t.scales||{},n=t.scale;r.each(e.xAxes,(function(t,e){t.id=t.id||"x-axis-"+e})),r.each(e.yAxes,(function(t,e){t.id=t.id||"y-axis-"+e})),n&&(n.id=n.id||"scale")},buildOrUpdateScales:function(){var e=this,i=e.options,a=e.scales||{},o=[],s=Object.keys(a).reduce((function(t,e){return t[e]=!1,t}),{});i.scales&&(o=o.concat((i.scales.xAxes||[]).map((function(t){return{options:t,dtype:"category",dposition:"bottom"}})),(i.scales.yAxes||[]).map((function(t){return{options:t,dtype:"linear",dposition:"left"}})))),i.scale&&o.push({options:i.scale,dtype:"radialLinear",isDefault:!0,dposition:"chartArea"}),r.each(o,(function(i){var o=i.options,l=o.id,u=r.valueOrDefault(o.type,i.dtype);n(o.position)!==n(i.dposition)&&(o.position=i.dposition),s[l]=!0;var c=null;if(l in a&&a[l].type===u)(c=a[l]).options=o,c.ctx=e.ctx,c.chart=e;else{var d=t.scaleService.getScaleConstructor(u);if(!d)return;c=new d({id:l,type:u,options:o,ctx:e.ctx,chart:e}),a[c.id]=c}c.mergeTicksOptions(),i.isDefault&&(e.scale=c)})),r.each(s,(function(t,e){t||delete a[e]})),e.scales=a,t.scaleService.addScalesToLayout(this)},buildOrUpdateControllers:function(){var e=this,n=[],i=[];return r.each(e.data.datasets,(function(r,a){var o=e.getDatasetMeta(a),s=r.type||e.config.type;if(o.type&&o.type!==s&&(e.destroyDatasetMeta(a),o=e.getDatasetMeta(a)),o.type=s,n.push(o.type),o.controller)o.controller.updateIndex(a),o.controller.linkScales();else{var l=t.controllers[o.type];if(void 0===l)throw new Error('"'+o.type+'" is not a chart type.');o.controller=new l(e,a),i.push(o.controller)}}),e),i},resetElements:function(){var t=this;r.each(t.data.datasets,(function(e,n){t.getDatasetMeta(n).controller.reset()}),t)},reset:function(){this.resetElements(),this.tooltip.initialize()},update:function(t){var n=this;if(t&&"object"==typeof t||(t={duration:t,lazy:arguments[1]}),e(n),l._invalidate(n),!1!==l.notify(n,"beforeUpdate")){n.tooltip._data=n.data;var i=n.buildOrUpdateControllers();r.each(n.data.datasets,(function(t,e){n.getDatasetMeta(e).controller.buildOrUpdateElements()}),n),n.updateLayout(),n.options.animation&&n.options.animation.duration&&r.each(i,(function(t){t.reset()})),n.updateDatasets(),n.tooltip.initialize(),n.lastActive=[],l.notify(n,"afterUpdate"),n._bufferedRender?n._bufferedRequest={duration:t.duration,easing:t.easing,lazy:t.lazy}:n.render(t)}},updateLayout:function(){!1!==l.notify(this,"beforeLayout")&&(o.update(this,this.width,this.height),l.notify(this,"afterScaleUpdate"),l.notify(this,"afterLayout"))},updateDatasets:function(){if(!1!==l.notify(this,"beforeDatasetsUpdate")){for(var t=0,e=this.data.datasets.length;t=0;--n)e.isDatasetVisible(n)&&e.drawDataset(n,t);l.notify(e,"afterDatasetsDraw",[t])}},drawDataset:function(t,e){var n=this.getDatasetMeta(t),i={meta:n,index:t,easingValue:e};!1!==l.notify(this,"beforeDatasetDraw",[i])&&(n.controller.draw(e),l.notify(this,"afterDatasetDraw",[i]))},_drawTooltip:function(t){var e=this.tooltip,n={tooltip:e,easingValue:t};!1!==l.notify(this,"beforeTooltipDraw",[n])&&(e.draw(),l.notify(this,"afterTooltipDraw",[n]))},getElementAtEvent:function(t){return a.modes.single(this,t)},getElementsAtEvent:function(t){return a.modes.label(this,t,{intersect:!0})},getElementsAtXAxis:function(t){return a.modes["x-axis"](this,t,{intersect:!0})},getElementsAtEventForMode:function(t,e,n){var i=a.modes[e];return"function"==typeof i?i(this,t,n):[]},getDatasetAtEvent:function(t){return a.modes.dataset(this,t,{intersect:!0})},getDatasetMeta:function(t){var e=this.data.datasets[t];e._meta||(e._meta={});var n=e._meta[this.id];return n||(n=e._meta[this.id]={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null}),n},getVisibleDatasetCount:function(){for(var t=0,e=0,n=this.data.datasets.length;en?(e+.05)/(n+.05):(n+.05)/(e+.05)},level:function(t){var e=this.contrast(t);return e>=7.1?"AAA":e>=4.5?"AA":""},dark:function(){var t=this.values.rgb;return(299*t[0]+587*t[1]+114*t[2])/1e3<128},light:function(){return!this.dark()},negate:function(){for(var t=[],e=0;e<3;e++)t[e]=255-this.values.rgb[e];return this.setValues("rgb",t),this},lighten:function(t){var e=this.values.hsl;return e[2]+=e[2]*t,this.setValues("hsl",e),this},darken:function(t){var e=this.values.hsl;return e[2]-=e[2]*t,this.setValues("hsl",e),this},saturate:function(t){var e=this.values.hsl;return e[1]+=e[1]*t,this.setValues("hsl",e),this},desaturate:function(t){var e=this.values.hsl;return e[1]-=e[1]*t,this.setValues("hsl",e),this},whiten:function(t){var e=this.values.hwb;return e[1]+=e[1]*t,this.setValues("hwb",e),this},blacken:function(t){var e=this.values.hwb;return e[2]+=e[2]*t,this.setValues("hwb",e),this},greyscale:function(){var t=this.values.rgb,e=.3*t[0]+.59*t[1]+.11*t[2];return this.setValues("rgb",[e,e,e]),this},clearer:function(t){var e=this.values.alpha;return this.setValues("alpha",e-e*t),this},opaquer:function(t){var e=this.values.alpha;return this.setValues("alpha",e+e*t),this},rotate:function(t){var e=this.values.hsl,n=(e[0]+t)%360;return e[0]=n<0?360+n:n,this.setValues("hsl",e),this},mix:function(t,e){var n=t,i=void 0===e?.5:e,r=2*i-1,a=this.alpha()-n.alpha(),o=((r*a==-1?r:(r+a)/(1+r*a))+1)/2,s=1-o;return this.rgb(o*this.red()+s*n.red(),o*this.green()+s*n.green(),o*this.blue()+s*n.blue()).alpha(this.alpha()*i+n.alpha()*(1-i))},toJSON:function(){return this.rgb()},clone:function(){var t,e,n=new a,i=this.values,r=n.values;for(var o in i)i.hasOwnProperty(o)&&("[object Array]"===(e={}.toString.call(t=i[o]))?r[o]=t.slice(0):"[object Number]"===e?r[o]=t:console.error("unexpected color value:",t));return n}}).spaces={rgb:["red","green","blue"],hsl:["hue","saturation","lightness"],hsv:["hue","saturation","value"],hwb:["hue","whiteness","blackness"],cmyk:["cyan","magenta","yellow","black"]},a.prototype.maxes={rgb:[255,255,255],hsl:[360,100,100],hsv:[360,100,100],hwb:[360,100,100],cmyk:[100,100,100,100]},a.prototype.getValues=function(t){for(var e=this.values,n={},i=0;i11?n?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":n?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}})}(n("wd/R"))},"8/+R":function(t,e,n){!function(t){"use strict";var e={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},n={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};t.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(t){return t.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0a30\u0a3e\u0a24"===e?t<4?t:t+12:"\u0a38\u0a35\u0a47\u0a30"===e?t:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===e?t>=10?t:t+12:"\u0a38\u0a3c\u0a3e\u0a2e"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0a30\u0a3e\u0a24":t<10?"\u0a38\u0a35\u0a47\u0a30":t<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":t<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}})}(n("wd/R"))},"8//i":function(t,e,n){"use strict";var i=n("CDJp"),r=n("RDha"),a=n("g8vO");t.exports=function(t){var e=i.global,n={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,color:"rgba(0, 0, 0, 0.1)",lineWidth:1},gridLines:{circular:!1},ticks:{showLabelBackdrop:!0,backdropColor:"rgba(255,255,255,0.75)",backdropPaddingY:2,backdropPaddingX:2,callback:a.formatters.linear},pointLabels:{display:!0,fontSize:10,callback:function(t){return t}}};function o(t){var e=t.options;return e.angleLines.display||e.pointLabels.display?t.chart.data.labels.length:0}function s(t){var n=t.options.pointLabels,i=r.valueOrDefault(n.fontSize,e.defaultFontSize),a=r.valueOrDefault(n.fontStyle,e.defaultFontStyle),o=r.valueOrDefault(n.fontFamily,e.defaultFontFamily);return{size:i,style:a,family:o,font:r.fontString(i,a,o)}}function l(t,e,n,i,r){return t===i||t===r?{start:e-n/2,end:e+n/2}:tr?{start:e-n-5,end:e}:{start:e,end:e+n+5}}function u(t){return 0===t||180===t?"center":t<180?"left":"right"}function c(t,e,n,i){if(r.isArray(e))for(var a=n.y,o=1.5*i,s=0;s270||t<90)&&(n.y-=e.h)}function h(t){return r.isNumber(t)?t:0}var f=t.LinearScaleBase.extend({setDimensions:function(){var t=this,n=t.options,i=n.ticks;t.width=t.maxWidth,t.height=t.maxHeight,t.xCenter=Math.round(t.width/2),t.yCenter=Math.round(t.height/2);var a=r.min([t.height,t.width]),o=r.valueOrDefault(i.fontSize,e.defaultFontSize);t.drawingArea=n.display?a/2-(o/2+i.backdropPaddingY):a/2},determineDataLimits:function(){var t=this,e=t.chart,n=Number.POSITIVE_INFINITY,i=Number.NEGATIVE_INFINITY;r.each(e.data.datasets,(function(a,o){if(e.isDatasetVisible(o)){var s=e.getDatasetMeta(o);r.each(a.data,(function(e,r){var a=+t.getRightValue(e);isNaN(a)||s.data[r].hidden||(n=Math.min(a,n),i=Math.max(a,i))}))}})),t.min=n===Number.POSITIVE_INFINITY?0:n,t.max=i===Number.NEGATIVE_INFINITY?0:i,t.handleTickRangeOptions()},getTickLimit:function(){var t=this.options.ticks,n=r.valueOrDefault(t.fontSize,e.defaultFontSize);return Math.min(t.maxTicksLimit?t.maxTicksLimit:11,Math.ceil(this.drawingArea/(1.5*n)))},convertTicksToLabels:function(){var e=this;t.LinearScaleBase.prototype.convertTicksToLabels.call(e),e.pointLabels=e.chart.data.labels.map(e.options.pointLabels.callback,e)},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},fit:function(){var t;this.options.pointLabels.display?function(t){var e,n,i,a=s(t),u=Math.min(t.height/2,t.width/2),c={r:t.width,l:0,t:t.height,b:0},d={};t.ctx.font=a.font,t._pointLabelSizes=[];var h,f,p,m=o(t);for(e=0;ec.r&&(c.r=_.end,d.r=g),y.startc.b&&(c.b=y.end,d.b=g)}t.setReductions(u,c,d)}(this):(t=Math.min(this.height/2,this.width/2),this.drawingArea=Math.round(t),this.setCenterPoint(0,0,0,0))},setReductions:function(t,e,n){var i=e.l/Math.sin(n.l),r=Math.max(e.r-this.width,0)/Math.sin(n.r),a=-e.t/Math.cos(n.t),o=-Math.max(e.b-this.height,0)/Math.cos(n.b);i=h(i),r=h(r),a=h(a),o=h(o),this.drawingArea=Math.min(Math.round(t-(i+r)/2),Math.round(t-(a+o)/2)),this.setCenterPoint(i,r,a,o)},setCenterPoint:function(t,e,n,i){var r=this,a=n+r.drawingArea,o=r.height-i-r.drawingArea;r.xCenter=Math.round((t+r.drawingArea+(r.width-e-r.drawingArea))/2+r.left),r.yCenter=Math.round((a+o)/2+r.top)},getIndexAngle:function(t){return t*(2*Math.PI/o(this))+(this.chart.options&&this.chart.options.startAngle?this.chart.options.startAngle:0)*Math.PI*2/360},getDistanceFromCenterForValue:function(t){var e=this;if(null===t)return 0;var n=e.drawingArea/(e.max-e.min);return e.options.ticks.reverse?(e.max-t)*n:(t-e.min)*n},getPointPosition:function(t,e){var n=this.getIndexAngle(t)-Math.PI/2;return{x:Math.round(Math.cos(n)*e)+this.xCenter,y:Math.round(Math.sin(n)*e)+this.yCenter}},getPointPositionForValue:function(t,e){return this.getPointPosition(t,this.getDistanceFromCenterForValue(e))},getBasePosition:function(){var t=this.min,e=this.max;return this.getPointPositionForValue(0,this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0)},draw:function(){var t=this,n=t.options,i=n.gridLines,a=n.ticks,l=r.valueOrDefault;if(n.display){var h=t.ctx,f=this.getIndexAngle(0),p=l(a.fontSize,e.defaultFontSize),m=l(a.fontStyle,e.defaultFontStyle),g=l(a.fontFamily,e.defaultFontFamily),v=r.fontString(p,m,g);r.each(t.ticks,(function(n,s){if(s>0||a.reverse){var u=t.getDistanceFromCenterForValue(t.ticksAsNumbers[s]);if(i.display&&0!==s&&function(t,e,n,i){var a=t.ctx;if(a.strokeStyle=r.valueAtIndexOrDefault(e.color,i-1),a.lineWidth=r.valueAtIndexOrDefault(e.lineWidth,i-1),t.options.gridLines.circular)a.beginPath(),a.arc(t.xCenter,t.yCenter,n,0,2*Math.PI),a.closePath(),a.stroke();else{var s=o(t);if(0===s)return;a.beginPath();var l=t.getPointPosition(0,n);a.moveTo(l.x,l.y);for(var u=1;u=0;p--){if(a.display){var m=t.getPointPosition(p,h);n.beginPath(),n.moveTo(t.xCenter,t.yCenter),n.lineTo(m.x,m.y),n.stroke(),n.closePath()}if(l.display){var g=t.getPointPosition(p,h+5),v=r.valueAtIndexOrDefault(l.fontColor,p,e.defaultFontColor);n.font=f.font,n.fillStyle=v;var _=t.getIndexAngle(p),y=r.toDegrees(_);n.textAlign=u(y),d(y,t._pointLabelSizes[p],g),c(n,t.pointLabels[p]||"",g,f.size)}}}(t)}}});t.scaleService.registerScaleType("radialLinear",f,n)}},"8TtQ":function(t,e,n){"use strict";t.exports=function(t){var e=t.Scale.extend({getLabels:function(){var t=this.chart.data;return this.options.labels||(this.isHorizontal()?t.xLabels:t.yLabels)||t.labels},determineDataLimits:function(){var t,e=this,n=e.getLabels();e.minIndex=0,e.maxIndex=n.length-1,void 0!==e.options.ticks.min&&(t=n.indexOf(e.options.ticks.min),e.minIndex=-1!==t?t:e.minIndex),void 0!==e.options.ticks.max&&(t=n.indexOf(e.options.ticks.max),e.maxIndex=-1!==t?t:e.maxIndex),e.min=n[e.minIndex],e.max=n[e.maxIndex]},buildTicks:function(){var t=this,e=t.getLabels();t.ticks=0===t.minIndex&&t.maxIndex===e.length-1?e:e.slice(t.minIndex,t.maxIndex+1)},getLabelForIndex:function(t,e){var n=this,i=n.chart.data,r=n.isHorizontal();return i.yLabels&&!r?n.getRightValue(i.datasets[e].data[t]):n.ticks[t-n.minIndex]},getPixelForValue:function(t,e){var n,i=this,r=i.options.offset,a=Math.max(i.maxIndex+1-i.minIndex-(r?0:1),1);if(null!=t&&(n=i.isHorizontal()?t.x:t.y),void 0!==n||void 0!==t&&isNaN(e)){var o=i.getLabels().indexOf(t=n||t);e=-1!==o?o:e}if(i.isHorizontal()){var s=i.width/a,l=s*(e-i.minIndex);return r&&(l+=s/2),i.left+Math.round(l)}var u=i.height/a,c=u*(e-i.minIndex);return r&&(c+=u/2),i.top+Math.round(c)},getPixelForTick:function(t){return this.getPixelForValue(this.ticks[t],t+this.minIndex,null)},getValueForPixel:function(t){var e=this,n=e.options.offset,i=Math.max(e._ticks.length-(n?0:1),1),r=e.isHorizontal(),a=(r?e.width:e.height)/i;return t-=r?e.left:e.top,n&&(t-=a/2),(t<=0?0:Math.round(t/a))+e.minIndex},getBasePixel:function(){return this.bottom}});t.scaleService.registerScaleType("category",e,{position:"bottom"})}},"8mBD":function(t,e,n){!function(t){"use strict";t.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},"9rRi":function(t,e,n){!function(t){"use strict";t.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(t){return t+(1===t?"d":t%10==2?"na":"mh")},week:{dow:1,doy:4}})}(n("wd/R"))},"A+xa":function(t,e,n){!function(t){"use strict";t.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(t){return t+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(t)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(t)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}})}(n("wd/R"))},A5uo:function(t,e,n){"use strict";var i=n("CDJp"),r=n("K2E3"),a=n("RDha");i._set("global",{animation:{duration:1e3,easing:"easeOutQuart",onProgress:a.noop,onComplete:a.noop}}),t.exports=function(t){t.Animation=r.extend({chart:null,currentStep:0,numSteps:60,easing:"",render:null,onAnimationProgress:null,onAnimationComplete:null}),t.animationService={frameDuration:17,animations:[],dropFrames:0,request:null,addAnimation:function(t,e,n,i){var r,a,o=this.animations;for(e.chart=t,i||(t.animating=!0),r=0,a=o.length;r1&&(n=Math.floor(t.dropFrames),t.dropFrames=t.dropFrames%1),t.advance(1+n);var i=Date.now();t.dropFrames+=(i-e)/t.frameDuration,t.animations.length>0&&t.requestAnimationFrame()},advance:function(t){for(var e,n,i=this.animations,r=0;r=e.numSteps?(a.callback(e.onAnimationComplete,[e],n),n.animating=!1,i.splice(r,1)):++r}},Object.defineProperty(t.Animation.prototype,"animationObject",{get:function(){return this}}),Object.defineProperty(t.Animation.prototype,"chartInstance",{get:function(){return this.chart},set:function(t){this.chart=t}})}},AQ68:function(t,e,n){!function(t){"use strict";t.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}})}(n("wd/R"))},AX6q:function(t,e,n){"use strict";var i=n("CDJp"),r=n("K2E3"),a=n("RDha"),o=n("fELs"),s=a.noop;function l(t,e){return t.usePointStyle?e*Math.SQRT2:t.boxWidth}i._set("global",{legend:{display:!0,position:"top",fullWidth:!0,reverse:!1,weight:1e3,onClick:function(t,e){var n=e.datasetIndex,i=this.chart,r=i.getDatasetMeta(n);r.hidden=null===r.hidden?!i.data.datasets[n].hidden:null,i.update()},onHover:null,labels:{boxWidth:40,padding:10,generateLabels:function(t){var e=t.data;return a.isArray(e.datasets)?e.datasets.map((function(e,n){return{text:e.label,fillStyle:a.isArray(e.backgroundColor)?e.backgroundColor[0]:e.backgroundColor,hidden:!t.isDatasetVisible(n),lineCap:e.borderCapStyle,lineDash:e.borderDash,lineDashOffset:e.borderDashOffset,lineJoin:e.borderJoinStyle,lineWidth:e.borderWidth,strokeStyle:e.borderColor,pointStyle:e.pointStyle,datasetIndex:n}}),this):[]}}},legendCallback:function(t){var e=[];e.push('
        ');for(var n=0;n'),t.data.datasets[n].label&&e.push(t.data.datasets[n].label),e.push("");return e.push("
      "),e.join("")}});var u=r.extend({initialize:function(t){a.extend(this,t),this.legendHitBoxes=[],this.doughnutMode=!1},beforeUpdate:s,update:function(t,e,n){var i=this;return i.beforeUpdate(),i.maxWidth=t,i.maxHeight=e,i.margins=n,i.beforeSetDimensions(),i.setDimensions(),i.afterSetDimensions(),i.beforeBuildLabels(),i.buildLabels(),i.afterBuildLabels(),i.beforeFit(),i.fit(),i.afterFit(),i.afterUpdate(),i.minSize},afterUpdate:s,beforeSetDimensions:s,setDimensions:function(){var t=this;t.isHorizontal()?(t.width=t.maxWidth,t.left=0,t.right=t.width):(t.height=t.maxHeight,t.top=0,t.bottom=t.height),t.paddingLeft=0,t.paddingTop=0,t.paddingRight=0,t.paddingBottom=0,t.minSize={width:0,height:0}},afterSetDimensions:s,beforeBuildLabels:s,buildLabels:function(){var t=this,e=t.options.labels||{},n=a.callback(e.generateLabels,[t.chart],t)||[];e.filter&&(n=n.filter((function(n){return e.filter(n,t.chart.data)}))),t.options.reverse&&n.reverse(),t.legendItems=n},afterBuildLabels:s,beforeFit:s,fit:function(){var t=this,e=t.options,n=e.labels,r=e.display,o=t.ctx,s=i.global,u=a.valueOrDefault,c=u(n.fontSize,s.defaultFontSize),d=u(n.fontStyle,s.defaultFontStyle),h=u(n.fontFamily,s.defaultFontFamily),f=a.fontString(c,d,h),p=t.legendHitBoxes=[],m=t.minSize,g=t.isHorizontal();if(g?(m.width=t.maxWidth,m.height=r?10:0):(m.width=r?10:0,m.height=t.maxHeight),r)if(o.font=f,g){var v=t.lineWidths=[0],_=t.legendItems.length?c+n.padding:0;o.textAlign="left",o.textBaseline="top",a.each(t.legendItems,(function(e,i){var r=l(n,c)+c/2+o.measureText(e.text).width;v[v.length-1]+r+n.padding>=t.width&&(_+=c+n.padding,v[v.length]=t.left),p[i]={left:0,top:0,width:r,height:c},v[v.length-1]+=r+n.padding})),m.height+=_}else{var y=n.padding,b=t.columnWidths=[],k=n.padding,w=0,M=0,S=c+y;a.each(t.legendItems,(function(t,e){var i=l(n,c)+c/2+o.measureText(t.text).width;M+S>m.height&&(k+=w+n.padding,b.push(w),w=0,M=0),w=Math.max(w,i),M+=S,p[e]={left:0,top:0,width:i,height:c}})),k+=w,b.push(w),m.width+=k}t.width=m.width,t.height=m.height},afterFit:s,isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},draw:function(){var t=this,e=t.options,n=e.labels,r=i.global,o=r.elements.line,s=t.width,u=t.lineWidths;if(e.display){var c,d=t.ctx,h=a.valueOrDefault,f=h(n.fontColor,r.defaultFontColor),p=h(n.fontSize,r.defaultFontSize),m=h(n.fontStyle,r.defaultFontStyle),g=h(n.fontFamily,r.defaultFontFamily),v=a.fontString(p,m,g);d.textAlign="left",d.textBaseline="middle",d.lineWidth=.5,d.strokeStyle=f,d.fillStyle=f,d.font=v;var _=l(n,p),y=t.legendHitBoxes,b=t.isHorizontal();c=b?{x:t.left+(s-u[0])/2,y:t.top+n.padding,line:0}:{x:t.left+n.padding,y:t.top+n.padding,line:0};var k=p+n.padding;a.each(t.legendItems,(function(i,l){var f=d.measureText(i.text).width,m=_+p/2+f,g=c.x,v=c.y;b?g+m>=s&&(v=c.y+=k,c.line++,g=c.x=t.left+(s-u[c.line])/2):v+k>t.bottom&&(g=c.x=g+t.columnWidths[c.line]+n.padding,v=c.y=t.top+n.padding,c.line++),function(t,n,i){if(!(isNaN(_)||_<=0)){d.save(),d.fillStyle=h(i.fillStyle,r.defaultColor),d.lineCap=h(i.lineCap,o.borderCapStyle),d.lineDashOffset=h(i.lineDashOffset,o.borderDashOffset),d.lineJoin=h(i.lineJoin,o.borderJoinStyle),d.lineWidth=h(i.lineWidth,o.borderWidth),d.strokeStyle=h(i.strokeStyle,r.defaultColor);var s=0===h(i.lineWidth,o.borderWidth);if(d.setLineDash&&d.setLineDash(h(i.lineDash,o.borderDash)),e.labels&&e.labels.usePointStyle){var l=p*Math.SQRT2/2,u=l/Math.SQRT2;a.canvas.drawPoint(d,i.pointStyle,l,t+u,n+u)}else s||d.strokeRect(t,n,_,p),d.fillRect(t,n,_,p);d.restore()}}(g,v,i),y[l].left=g,y[l].top=v,function(t,e,n,i){var r=p/2,a=_+r+t,o=e+r;d.fillText(n.text,a,o),n.hidden&&(d.beginPath(),d.lineWidth=2,d.moveTo(a,o),d.lineTo(a+i,o),d.stroke())}(g,v,i,f),b?c.x+=m+n.padding:c.y+=k}))}},handleEvent:function(t){var e=this,n=e.options,i="mouseup"===t.type?"click":t.type,r=!1;if("mousemove"===i){if(!n.onHover)return}else{if("click"!==i)return;if(!n.onClick)return}var a=t.x,o=t.y;if(a>=e.left&&a<=e.right&&o>=e.top&&o<=e.bottom)for(var s=e.legendHitBoxes,l=0;l=u.left&&a<=u.left+u.width&&o>=u.top&&o<=u.top+u.height){if("click"===i){n.onClick.call(e,t.native,e.legendItems[l]),r=!0;break}if("mousemove"===i){n.onHover.call(e,t.native,e.legendItems[l]),r=!0;break}}}return r}});function c(t,e){var n=new u({ctx:t.ctx,options:e,chart:t});o.configure(t,n,e),o.addBox(t,n),t.legend=n}t.exports={id:"legend",_element:u,beforeInit:function(t){var e=t.options.legend;e&&c(t,e)},beforeUpdate:function(t){var e=t.options.legend,n=t.legend;e?(a.mergeIf(e,i.global.legend),n?(o.configure(t,n,e),n.options=e):c(t,e)):n&&(o.removeBox(t,n),delete t.legend)},afterEvent:function(t,e){var n=t.legend;n&&n.handleEvent(e)}}},As3K:function(t,e,n){"use strict";var i=n("TC34");t.exports={toLineHeight:function(t,e){var n=(""+t).match(/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/);if(!n||"normal"===n[1])return 1.2*e;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100}return e*t},toPadding:function(t){var e,n,r,a;return i.isObject(t)?(e=+t.top||0,n=+t.right||0,r=+t.bottom||0,a=+t.left||0):e=n=r=a=+t||0,{top:e,right:n,bottom:r,left:a,height:e+r,width:a+n}},resolve:function(t,e,n){var r,a,o;for(r=0,a=t.length;r=4||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===e||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":t<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":t<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":t<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}})}(n("wd/R"))},B55N:function(t,e,n){!function(t){"use strict";t.defineLocale("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(t){return"\u5348\u5f8c"===t},meridiem:function(t,e,n){return t<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(t){return t.week()12?t:t+12:"sanje"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"rati":t<12?"sokalli":t<16?"donparam":t<20?"sanje":"rati"}})}(n("wd/R"))},Dkky:function(t,e,n){!function(t){"use strict";t.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(t,e){switch(e){default:case"M":case"Q":case"D":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},Dmvi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},DoHr:function(t,e,n){!function(t){"use strict";var e={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};t.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(t,n){switch(n){case"d":case"D":case"Do":case"DD":return t;default:if(0===t)return t+"'\u0131nc\u0131";var i=t%10;return t+(e[i]||e[t%100-i]||e[t>=100?100:null])}},week:{dow:1,doy:7}})}(n("wd/R"))},DxQv:function(t,e,n){!function(t){"use strict";t.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},Dzi0:function(t,e,n){!function(t){"use strict";t.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(t){return t},week:{dow:1,doy:4}})}(n("wd/R"))},"E+lV":function(t,e,n){!function(t){"use strict";var e={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,i){var r=e.words[i];return 1===i.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"\u0434\u0430\u043d",dd:e.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:e.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},EOgW:function(t,e,n){!function(t){"use strict";t.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(t){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===t},meridiem:function(t,e,n){return t<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}})}(n("wd/R"))},G0Q6:function(t,e,n){"use strict";var i=n("CDJp"),r=n("vvH+"),a=n("RDha");i._set("line",{showLines:!0,spanGaps:!1,hover:{mode:"label"},scales:{xAxes:[{type:"category",id:"x-axis-0"}],yAxes:[{type:"linear",id:"y-axis-0"}]}}),t.exports=function(t){function e(t,e){return a.valueOrDefault(t.showLine,e.showLines)}t.controllers.line=t.DatasetController.extend({datasetElementType:r.Line,dataElementType:r.Point,update:function(t){var n,i,r,o=this,s=o.getMeta(),l=s.dataset,u=s.data||[],c=o.chart.options,d=c.elements.line,h=o.getScaleForId(s.yAxisID),f=o.getDataset(),p=e(f,c);for(p&&(r=l.custom||{},void 0!==f.tension&&void 0===f.lineTension&&(f.lineTension=f.tension),l._scale=h,l._datasetIndex=o.index,l._children=u,l._model={spanGaps:f.spanGaps?f.spanGaps:c.spanGaps,tension:r.tension?r.tension:a.valueOrDefault(f.lineTension,d.tension),backgroundColor:r.backgroundColor?r.backgroundColor:f.backgroundColor||d.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:f.borderWidth||d.borderWidth,borderColor:r.borderColor?r.borderColor:f.borderColor||d.borderColor,borderCapStyle:r.borderCapStyle?r.borderCapStyle:f.borderCapStyle||d.borderCapStyle,borderDash:r.borderDash?r.borderDash:f.borderDash||d.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:f.borderDashOffset||d.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:f.borderJoinStyle||d.borderJoinStyle,fill:r.fill?r.fill:void 0!==f.fill?f.fill:d.fill,steppedLine:r.steppedLine?r.steppedLine:a.valueOrDefault(f.steppedLine,d.stepped),cubicInterpolationMode:r.cubicInterpolationMode?r.cubicInterpolationMode:a.valueOrDefault(f.cubicInterpolationMode,d.cubicInterpolationMode)},l.pivot()),n=0,i=u.length;n=2&&i%10<=4&&(i%100<10||i%100>=20)?r[1]:r[2])}t.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:e,mm:e,h:e,hh:e,d:"\u0434\u0437\u0435\u043d\u044c",dd:e,M:"\u043c\u0435\u0441\u044f\u0446",MM:e,y:"\u0433\u043e\u0434",yy:e},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u044b":t<12?"\u0440\u0430\u043d\u0456\u0446\u044b":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t%10!=2&&t%10!=3||t%100==12||t%100==13?t+"-\u044b":t+"-\u0456";case"D":return t+"-\u0433\u0430";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},HP3h:function(t,e,n){!function(t){"use strict";var e={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},n=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},i={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},r=function(t){return function(e,r,a,o){var s=n(e),l=i[t][n(e)];return 2===s&&(l=l[r?0:1]),l.replace(/%d/i,e)}},a=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar-ly",{months:a,monthsShort:a,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:r("s"),ss:r("s"),m:r("m"),mm:r("m"),h:r("h"),hh:r("h"),d:r("d"),dd:r("d"),M:r("M"),MM:r("M"),y:r("y"),yy:r("y")},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},Hg4g:function(t,e){t.exports={acquireContext:function(t){return t&&t.canvas&&(t=t.canvas),t&&t.getContext("2d")||null}}},IBtZ:function(t,e,n){!function(t){"use strict";t.defineLocale("ka",{months:{standalone:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),format:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(t){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(t)?t.replace(/\u10d8$/,"\u10e8\u10d8"):t+"\u10e8\u10d8"},past:function(t){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(t)?t.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(t)?t.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(t){return 0===t?t:1===t?t+"-\u10da\u10d8":t<20||t<=100&&t%20==0||t%100==0?"\u10db\u10d4-"+t:t+"-\u10d4"},week:{dow:1,doy:7}})}(n("wd/R"))},"Ivi+":function(t,e,n){!function(t){"use strict";t.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\uc77c";case"M":return t+"\uc6d4";case"w":case"W":return t+"\uc8fc";default:return t}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(t){return"\uc624\ud6c4"===t},meridiem:function(t,e,n){return t<12?"\uc624\uc804":"\uc624\ud6c4"}})}(n("wd/R"))},JVSJ:function(t,e,n){!function(t){"use strict";function e(t,e,n){var i=t+" ";switch(n){case"ss":return i+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return i+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return i+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return i+(1===t?"dan":"dana");case"MM":return i+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return i+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},JvlW:function(t,e,n){!function(t){"use strict";var e={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function n(t,e,n,i){return e?r(n)[0]:i?r(n)[1]:r(n)[2]}function i(t){return t%10==0||t>10&&t<20}function r(t){return e[t].split("_")}function a(t,e,a,o){var s=t+" ";return 1===t?s+n(0,e,a[0],o):e?s+(i(t)?r(a)[1]:r(a)[0]):o?s+r(a)[1]:s+(i(t)?r(a)[1]:r(a)[2])}t.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(t,e,n,i){return e?"kelios sekund\u0117s":i?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:a,m:n,mm:a,h:n,hh:a,d:n,dd:a,M:n,MM:a,y:n,yy:a},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(t){return t+"-oji"},week:{dow:1,doy:4}})}(n("wd/R"))},"K/tc":function(t,e,n){!function(t){"use strict";t.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(t){return/^nm$/i.test(t)},meridiem:function(t,e,n){return t<12?n?"vm":"VM":n?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(t){return t+(1===t||8===t||t>=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},K2E3:function(t,e,n){"use strict";var i=n("6ww4"),r=n("RDha"),a=function(t){r.extend(this,t),this.initialize.apply(this,arguments)};r.extend(a.prototype,{initialize:function(){this.hidden=!1},pivot:function(){var t=this;return t._view||(t._view=r.clone(t._model)),t._start={},t},transition:function(t){var e=this,n=e._model,r=e._start,a=e._view;return n&&1!==t?(a||(a=e._view={}),r||(r=e._start={}),function(t,e,n,r){var a,o,s,l,u,c,d,h,f,p=Object.keys(n);for(a=0,o=p.length;a0||(e.forEach((function(e){delete t[e]})),delete t._chartjs)}}t.DatasetController=function(t,e){this.initialize(t,e)},i.extend(t.DatasetController.prototype,{datasetElementType:null,dataElementType:null,initialize:function(t,e){this.chart=t,this.index=e,this.linkScales(),this.addElements()},updateIndex:function(t){this.index=t},linkScales:function(){var t=this,e=t.getMeta(),n=t.getDataset();null!==e.xAxisID&&e.xAxisID in t.chart.scales||(e.xAxisID=n.xAxisID||t.chart.options.scales.xAxes[0].id),null!==e.yAxisID&&e.yAxisID in t.chart.scales||(e.yAxisID=n.yAxisID||t.chart.options.scales.yAxes[0].id)},getDataset:function(){return this.chart.data.datasets[this.index]},getMeta:function(){return this.chart.getDatasetMeta(this.index)},getScaleForId:function(t){return this.chart.scales[t]},reset:function(){this.update(!0)},destroy:function(){this._data&&n(this._data,this)},createMetaDataset:function(){var t=this.datasetElementType;return t&&new t({_chart:this.chart,_datasetIndex:this.index})},createMetaData:function(t){var e=this.dataElementType;return e&&new e({_chart:this.chart,_datasetIndex:this.index,_index:t})},addElements:function(){var t,e,n=this.getMeta(),i=this.getDataset().data||[],r=n.data;for(t=0,e=i.length;tn&&this.insertElements(n,i-n)},insertElements:function(t,e){for(var n=0;n=2&&t<=4?e[1]:e[2]},translate:function(t,n,i){var r=e.words[i];return 1===i.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mjesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},LdGl:function(t,e){function n(t){var e,n,i=t[0]/255,r=t[1]/255,a=t[2]/255,o=Math.min(i,r,a),s=Math.max(i,r,a),l=s-o;return s==o?e=0:i==s?e=(r-a)/l:r==s?e=2+(a-i)/l:a==s&&(e=4+(i-r)/l),(e=Math.min(60*e,360))<0&&(e+=360),n=(o+s)/2,[e,100*(s==o?0:n<=.5?l/(s+o):l/(2-s-o)),100*n]}function i(t){var e,n,i=t[0],r=t[1],a=t[2],o=Math.min(i,r,a),s=Math.max(i,r,a),l=s-o;return n=0==s?0:l/s*1e3/10,s==o?e=0:i==s?e=(r-a)/l:r==s?e=2+(a-i)/l:a==s&&(e=4+(i-r)/l),(e=Math.min(60*e,360))<0&&(e+=360),[e,n,s/255*1e3/10]}function a(t){var e=t[0],i=t[1],r=t[2];return[n(t)[0],1/255*Math.min(e,Math.min(i,r))*100,100*(r=1-1/255*Math.max(e,Math.max(i,r)))]}function o(t){var e,n=t[0]/255,i=t[1]/255,r=t[2]/255;return[100*((1-n-(e=Math.min(1-n,1-i,1-r)))/(1-e)||0),100*((1-i-e)/(1-e)||0),100*((1-r-e)/(1-e)||0),100*e]}function s(t){return S[JSON.stringify(t)]}function l(t){var e=t[0]/255,n=t[1]/255,i=t[2]/255;return[100*(.4124*(e=e>.04045?Math.pow((e+.055)/1.055,2.4):e/12.92)+.3576*(n=n>.04045?Math.pow((n+.055)/1.055,2.4):n/12.92)+.1805*(i=i>.04045?Math.pow((i+.055)/1.055,2.4):i/12.92)),100*(.2126*e+.7152*n+.0722*i),100*(.0193*e+.1192*n+.9505*i)]}function u(t){var e=l(t),n=e[0],i=e[1],r=e[2];return i/=100,r/=108.883,n=(n/=95.047)>.008856?Math.pow(n,1/3):7.787*n+16/116,[116*(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116)-16,500*(n-i),200*(i-(r=r>.008856?Math.pow(r,1/3):7.787*r+16/116))]}function c(t){var e,n,i,r,a,o=t[0]/360,s=t[1]/100,l=t[2]/100;if(0==s)return[a=255*l,a,a];e=2*l-(n=l<.5?l*(1+s):l+s-l*s),r=[0,0,0];for(var u=0;u<3;u++)(i=o+1/3*-(u-1))<0&&i++,i>1&&i--,r[u]=255*(a=6*i<1?e+6*(n-e)*i:2*i<1?n:3*i<2?e+(n-e)*(2/3-i)*6:e);return r}function d(t){var e=t[0]/60,n=t[1]/100,i=t[2]/100,r=Math.floor(e)%6,a=e-Math.floor(e),o=255*i*(1-n),s=255*i*(1-n*a),l=255*i*(1-n*(1-a));switch(i*=255,r){case 0:return[i,l,o];case 1:return[s,i,o];case 2:return[o,i,l];case 3:return[o,s,i];case 4:return[l,o,i];case 5:return[i,o,s]}}function h(t){var e,n,i,a,o=t[0]/360,s=t[1]/100,l=t[2]/100,u=s+l;switch(u>1&&(s/=u,l/=u),i=6*o-(e=Math.floor(6*o)),0!=(1&e)&&(i=1-i),a=s+i*((n=1-l)-s),e){default:case 6:case 0:r=n,g=a,b=s;break;case 1:r=a,g=n,b=s;break;case 2:r=s,g=n,b=a;break;case 3:r=s,g=a,b=n;break;case 4:r=a,g=s,b=n;break;case 5:r=n,g=s,b=a}return[255*r,255*g,255*b]}function f(t){var e=t[1]/100,n=t[2]/100,i=t[3]/100;return[255*(1-Math.min(1,t[0]/100*(1-i)+i)),255*(1-Math.min(1,e*(1-i)+i)),255*(1-Math.min(1,n*(1-i)+i))]}function p(t){var e,n,i,r=t[0]/100,a=t[1]/100,o=t[2]/100;return n=-.9689*r+1.8758*a+.0415*o,i=.0557*r+-.204*a+1.057*o,e=(e=3.2406*r+-1.5372*a+-.4986*o)>.0031308?1.055*Math.pow(e,1/2.4)-.055:e*=12.92,n=n>.0031308?1.055*Math.pow(n,1/2.4)-.055:n*=12.92,i=i>.0031308?1.055*Math.pow(i,1/2.4)-.055:i*=12.92,[255*(e=Math.min(Math.max(0,e),1)),255*(n=Math.min(Math.max(0,n),1)),255*(i=Math.min(Math.max(0,i),1))]}function m(t){var e=t[0],n=t[1],i=t[2];return n/=100,i/=108.883,e=(e/=95.047)>.008856?Math.pow(e,1/3):7.787*e+16/116,[116*(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116)-16,500*(e-n),200*(n-(i=i>.008856?Math.pow(i,1/3):7.787*i+16/116))]}function v(t){var e,n,i,r,a=t[0],o=t[1],s=t[2];return a<=8?r=(n=100*a/903.3)/100*7.787+16/116:(n=100*Math.pow((a+16)/116,3),r=Math.pow(n/100,1/3)),[e=e/95.047<=.008856?e=95.047*(o/500+r-16/116)/7.787:95.047*Math.pow(o/500+r,3),n,i=i/108.883<=.008859?i=108.883*(r-s/200-16/116)/7.787:108.883*Math.pow(r-s/200,3)]}function _(t){var e,n=t[0],i=t[1],r=t[2];return(e=360*Math.atan2(r,i)/2/Math.PI)<0&&(e+=360),[n,Math.sqrt(i*i+r*r),e]}function y(t){return p(v(t))}function k(t){var e,n=t[1];return e=t[2]/360*2*Math.PI,[t[0],n*Math.cos(e),n*Math.sin(e)]}function w(t){return M[t]}t.exports={rgb2hsl:n,rgb2hsv:i,rgb2hwb:a,rgb2cmyk:o,rgb2keyword:s,rgb2xyz:l,rgb2lab:u,rgb2lch:function(t){return _(u(t))},hsl2rgb:c,hsl2hsv:function(t){var e=t[1]/100,n=t[2]/100;return 0===n?[0,0,0]:[t[0],2*(e*=(n*=2)<=1?n:2-n)/(n+e)*100,(n+e)/2*100]},hsl2hwb:function(t){return a(c(t))},hsl2cmyk:function(t){return o(c(t))},hsl2keyword:function(t){return s(c(t))},hsv2rgb:d,hsv2hsl:function(t){var e,n,i=t[1]/100,r=t[2]/100;return e=i*r,[t[0],100*(e=(e/=(n=(2-i)*r)<=1?n:2-n)||0),100*(n/=2)]},hsv2hwb:function(t){return a(d(t))},hsv2cmyk:function(t){return o(d(t))},hsv2keyword:function(t){return s(d(t))},hwb2rgb:h,hwb2hsl:function(t){return n(h(t))},hwb2hsv:function(t){return i(h(t))},hwb2cmyk:function(t){return o(h(t))},hwb2keyword:function(t){return s(h(t))},cmyk2rgb:f,cmyk2hsl:function(t){return n(f(t))},cmyk2hsv:function(t){return i(f(t))},cmyk2hwb:function(t){return a(f(t))},cmyk2keyword:function(t){return s(f(t))},keyword2rgb:w,keyword2hsl:function(t){return n(w(t))},keyword2hsv:function(t){return i(w(t))},keyword2hwb:function(t){return a(w(t))},keyword2cmyk:function(t){return o(w(t))},keyword2lab:function(t){return u(w(t))},keyword2xyz:function(t){return l(w(t))},xyz2rgb:p,xyz2lab:m,xyz2lch:function(t){return _(m(t))},lab2xyz:v,lab2rgb:y,lab2lch:_,lch2lab:k,lch2xyz:function(t){return v(k(t))},lch2rgb:function(t){return y(k(t))}};var M={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},S={};for(var x in M)S[JSON.stringify(M[x])]=x},Loxo:function(t,e,n){!function(t){"use strict";t.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}})}(n("wd/R"))},ODdm:function(t,e,n){"use strict";t.exports=function(t){t.Bar=function(e,n){return n.type="bar",new t(e,n)}}},OIYi:function(t,e,n){!function(t){"use strict";t.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}})}(n("wd/R"))},OXbD:function(t,e,n){"use strict";var i=n("CDJp"),r=n("K2E3"),a=n("RDha"),o=i.global.defaultColor;function s(t){var e=this._view;return!!e&&Math.abs(t-e.x)=10?t:t+12:"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0930\u093e\u0924\u094d\u0930\u0940":t<10?"\u0938\u0915\u093e\u0933\u0940":t<17?"\u0926\u0941\u092a\u093e\u0930\u0940":t<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}})}(n("wd/R"))},OjkT:function(t,e,n){!function(t){"use strict";var e={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},n={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};t.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(t){return t.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0930\u093e\u0924\u093f"===e?t<4?t:t+12:"\u092c\u093f\u0939\u093e\u0928"===e?t:"\u0926\u093f\u0909\u0901\u0938\u094b"===e?t>=10?t:t+12:"\u0938\u093e\u0901\u091d"===e?t+12:void 0},meridiem:function(t,e,n){return t<3?"\u0930\u093e\u0924\u093f":t<12?"\u092c\u093f\u0939\u093e\u0928":t<16?"\u0926\u093f\u0909\u0901\u0938\u094b":t<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}})}(n("wd/R"))},Oxv6:function(t,e,n){!function(t){"use strict";var e={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};t.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0448\u0430\u0431"===e?t<4?t:t+12:"\u0441\u0443\u0431\u04b3"===e?t:"\u0440\u04ef\u0437"===e?t>=11?t:t+12:"\u0431\u0435\u0433\u043e\u04b3"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0448\u0430\u0431":t<11?"\u0441\u0443\u0431\u04b3":t<16?"\u0440\u04ef\u0437":t<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},OzsZ:function(t,e,n){var i=n("LdGl"),r=function(){return new u};for(var a in i){r[a+"Raw"]=function(t){return function(e){return"number"==typeof e&&(e=Array.prototype.slice.call(arguments)),i[t](e)}}(a);var o=/(\w+)2(\w+)/.exec(a),s=o[1],l=o[2];(r[s]=r[s]||{})[l]=r[a]=function(t){return function(e){"number"==typeof e&&(e=Array.prototype.slice.call(arguments));var n=i[t](e);if("string"==typeof n||void 0===n)return n;for(var r=0;r1&&t<5&&1!=~~(t/10)}function r(t,e,n,r){var a=t+" ";switch(n){case"s":return e||r?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return e||r?a+(i(t)?"sekundy":"sekund"):a+"sekundami";case"m":return e?"minuta":r?"minutu":"minutou";case"mm":return e||r?a+(i(t)?"minuty":"minut"):a+"minutami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?a+(i(t)?"hodiny":"hodin"):a+"hodinami";case"d":return e||r?"den":"dnem";case"dd":return e||r?a+(i(t)?"dny":"dn\xed"):a+"dny";case"M":return e||r?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return e||r?a+(i(t)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):a+"m\u011bs\xedci";case"y":return e||r?"rok":"rokem";case"yy":return e||r?a+(i(t)?"roky":"let"):a+"lety"}}t.defineLocale("cs",{months:e,monthsShort:n,monthsParse:function(t,e){var n,i=[];for(n=0;n<12;n++)i[n]=new RegExp("^"+t[n]+"$|^"+e[n]+"$","i");return i}(e,n),shortMonthsParse:function(t){var e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n}(n),longMonthsParse:function(t){var e,n=[];for(e=0;e<12;e++)n[e]=new RegExp("^"+t[e]+"$","i");return n}(e),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},PeUW:function(t,e,n){!function(t){"use strict";var e={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},n={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};t.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(t){return t+"\u0bb5\u0ba4\u0bc1"},preparse:function(t){return t.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(t,e,n){return t<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":t<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":t<10?" \u0b95\u0bbe\u0bb2\u0bc8":t<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":t<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":t<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(t,e){return 12===t&&(t=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===e?t<2?t:t+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===e||"\u0b95\u0bbe\u0bb2\u0bc8"===e||"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===e&&t>=10?t:t+12},week:{dow:0,doy:6}})}(n("wd/R"))},PpIw:function(t,e,n){!function(t){"use strict";var e={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},n={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};t.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(t){return t.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===e?t<4?t:t+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===e?t:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===e?t>=10?t:t+12:"\u0cb8\u0c82\u0c9c\u0cc6"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":t<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":t<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":t<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(t){return t+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}})}(n("wd/R"))},Qexa:function(t,e,n){"use strict";t.exports=function(t){t.Bubble=function(e,n){return n.type="bubble",new t(e,n)}}},Qj4J:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}})}(n("wd/R"))},RAwQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,i){var r={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return e?r[n][0]:r[n][1]}function n(t){if(t=parseInt(t,10),isNaN(t))return!1;if(t<0)return!0;if(t<10)return 4<=t&&t<=7;if(t<100){var e=t%10;return n(0===e?t/10:e)}if(t<1e4){for(;t>=10;)t/=10;return n(t)}return n(t/=1e3)}t.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(t){return n(t.substr(0,t.indexOf(" ")))?"a "+t:"an "+t},past:function(t){return n(t.substr(0,t.indexOf(" ")))?"viru "+t:"virun "+t},s:"e puer Sekonnen",ss:"%d Sekonnen",m:e,mm:"%d Minutten",h:e,hh:"%d Stonnen",d:e,dd:"%d Deeg",M:e,MM:"%d M\xe9int",y:e,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},RCHg:function(t,e,n){"use strict";var i=n("wd/R");i="function"==typeof i?i:window.moment;var r=n("CDJp"),a=n("RDha"),o=Number.MIN_SAFE_INTEGER||-9007199254740991,s=Number.MAX_SAFE_INTEGER||9007199254740991,l={millisecond:{common:!0,size:1,steps:[1,2,5,10,20,50,100,250,500]},second:{common:!0,size:1e3,steps:[1,2,5,10,30]},minute:{common:!0,size:6e4,steps:[1,2,5,10,30]},hour:{common:!0,size:36e5,steps:[1,2,3,6,12]},day:{common:!0,size:864e5,steps:[1,2,5]},week:{common:!1,size:6048e5,steps:[1,2,3,4]},month:{common:!0,size:2628e6,steps:[1,2,3]},quarter:{common:!1,size:7884e6,steps:[1,2,3,4]},year:{common:!0,size:3154e7}},u=Object.keys(l);function c(t,e){return t-e}function d(t){var e,n,i,r={},a=[];for(e=0,n=t.length;e=0&&o<=s;){if(a=t[i=o+s>>1],!(r=t[i-1]||null))return{lo:null,hi:a};if(a[e]n))return{lo:r,hi:a};s=i-1}}return{lo:a,hi:null}}(t,e,n),a=r.lo?r.hi?r.lo:t[t.length-2]:t[0],o=r.lo?r.hi?r.hi:t[t.length-1]:t[1],s=o[e]-a[e];return a[i]+(o[i]-a[i])*(s?(n-a[e])/s:0)}function f(t,e){var n=e.parser,r=e.parser||e.format;return"function"==typeof n?n(t):"string"==typeof t&&"string"==typeof r?i(t,r):(t instanceof i||(t=i(t)),t.isValid()?t:"function"==typeof r?r(t):t)}function p(t,e){if(a.isNullOrUndef(t))return null;var n=e.options.time,i=f(e.getRightValue(t),n);return i.isValid()?(n.round&&i.startOf(n.round),i.valueOf()):null}function m(t){for(var e=u.indexOf(t)+1,n=u.length;e=o&&n<=c&&_.push(n);return r.min=o,r.max=c,r._unit=g.unit||function(t,e,n,r){var a,o,s=i.duration(i(r).diff(i(n)));for(a=u.length-1;a>=u.indexOf(e);a--)if(l[o=u[a]].common&&s.as(o)>=t.length)return o;return u[e?u.indexOf(e):0]}(_,g.minUnit,r.min,r.max),r._majorUnit=m(r._unit),r._table=function(t,e,n,i){if("linear"===i||!t.length)return[{time:e,pos:0},{time:n,pos:1}];var r,a,o,s,l,u=[],c=[e];for(r=0,a=t.length;re&&s1?e[1]:i,"pos")-h(t,"time",a,"pos"))/2),r.time.max||(a=e.length>1?e[e.length-2]:n,s=(h(t,"time",e[e.length-1],"pos")-h(t,"time",a,"pos"))/2)),{left:o,right:s}}(r._table,_,o,c,d),r._labelFormat=function(t,e){var n,i,r,a=t.length;for(n=0;n=0&&t0?s:1}});t.scaleService.registerScaleType("time",e,{position:"bottom",distribution:"linear",bounds:"data",time:{parser:!1,format:!1,unit:!1,round:!1,displayFormat:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{millisecond:"h:mm:ss.SSS a",second:"h:mm:ss a",minute:"h:mm a",hour:"hA",day:"MMM D",week:"ll",month:"MMM YYYY",quarter:"[Q]Q - YYYY",year:"YYYY"}},ticks:{autoSkip:!1,source:"auto",major:{enabled:!1}}})}},RDha:function(t,e,n){"use strict";t.exports=n("TC34"),t.exports.easing=n("u0Op"),t.exports.canvas=n("Sfow"),t.exports.options=n("As3K")},RnhZ:function(t,e,n){var i={"./af":"K/tc","./af.js":"K/tc","./ar":"jnO4","./ar-dz":"o1bE","./ar-dz.js":"o1bE","./ar-kw":"Qj4J","./ar-kw.js":"Qj4J","./ar-ly":"HP3h","./ar-ly.js":"HP3h","./ar-ma":"CoRJ","./ar-ma.js":"CoRJ","./ar-sa":"gjCT","./ar-sa.js":"gjCT","./ar-tn":"bYM6","./ar-tn.js":"bYM6","./ar.js":"jnO4","./az":"SFxW","./az.js":"SFxW","./be":"H8ED","./be.js":"H8ED","./bg":"hKrs","./bg.js":"hKrs","./bm":"p/rL","./bm.js":"p/rL","./bn":"kEOa","./bn.js":"kEOa","./bo":"0mo+","./bo.js":"0mo+","./br":"aIdf","./br.js":"aIdf","./bs":"JVSJ","./bs.js":"JVSJ","./ca":"1xZ4","./ca.js":"1xZ4","./cs":"PA2r","./cs.js":"PA2r","./cv":"A+xa","./cv.js":"A+xa","./cy":"l5ep","./cy.js":"l5ep","./da":"DxQv","./da.js":"DxQv","./de":"tGlX","./de-at":"s+uk","./de-at.js":"s+uk","./de-ch":"u3GI","./de-ch.js":"u3GI","./de.js":"tGlX","./dv":"WYrj","./dv.js":"WYrj","./el":"jUeY","./el.js":"jUeY","./en-au":"Dmvi","./en-au.js":"Dmvi","./en-ca":"OIYi","./en-ca.js":"OIYi","./en-gb":"Oaa7","./en-gb.js":"Oaa7","./en-ie":"4dOw","./en-ie.js":"4dOw","./en-il":"czMo","./en-il.js":"czMo","./en-nz":"b1Dy","./en-nz.js":"b1Dy","./eo":"Zduo","./eo.js":"Zduo","./es":"iYuL","./es-do":"CjzT","./es-do.js":"CjzT","./es-us":"Vclq","./es-us.js":"Vclq","./es.js":"iYuL","./et":"7BjC","./et.js":"7BjC","./eu":"D/JM","./eu.js":"D/JM","./fa":"jfSC","./fa.js":"jfSC","./fi":"gekB","./fi.js":"gekB","./fo":"ByF4","./fo.js":"ByF4","./fr":"nyYc","./fr-ca":"2fjn","./fr-ca.js":"2fjn","./fr-ch":"Dkky","./fr-ch.js":"Dkky","./fr.js":"nyYc","./fy":"cRix","./fy.js":"cRix","./gd":"9rRi","./gd.js":"9rRi","./gl":"iEDd","./gl.js":"iEDd","./gom-latn":"DKr+","./gom-latn.js":"DKr+","./gu":"4MV3","./gu.js":"4MV3","./he":"x6pH","./he.js":"x6pH","./hi":"3E1r","./hi.js":"3E1r","./hr":"S6ln","./hr.js":"S6ln","./hu":"WxRl","./hu.js":"WxRl","./hy-am":"1rYy","./hy-am.js":"1rYy","./id":"UDhR","./id.js":"UDhR","./is":"BVg3","./is.js":"BVg3","./it":"bpih","./it.js":"bpih","./ja":"B55N","./ja.js":"B55N","./jv":"tUCv","./jv.js":"tUCv","./ka":"IBtZ","./ka.js":"IBtZ","./kk":"bXm7","./kk.js":"bXm7","./km":"6B0Y","./km.js":"6B0Y","./kn":"PpIw","./kn.js":"PpIw","./ko":"Ivi+","./ko.js":"Ivi+","./ky":"lgnt","./ky.js":"lgnt","./lb":"RAwQ","./lb.js":"RAwQ","./lo":"sp3z","./lo.js":"sp3z","./lt":"JvlW","./lt.js":"JvlW","./lv":"uXwI","./lv.js":"uXwI","./me":"KTz0","./me.js":"KTz0","./mi":"aIsn","./mi.js":"aIsn","./mk":"aQkU","./mk.js":"aQkU","./ml":"AvvY","./ml.js":"AvvY","./mn":"lYtQ","./mn.js":"lYtQ","./mr":"Ob0Z","./mr.js":"Ob0Z","./ms":"6+QB","./ms-my":"ZAMP","./ms-my.js":"ZAMP","./ms.js":"6+QB","./mt":"G0Uy","./mt.js":"G0Uy","./my":"honF","./my.js":"honF","./nb":"bOMt","./nb.js":"bOMt","./ne":"OjkT","./ne.js":"OjkT","./nl":"+s0g","./nl-be":"2ykv","./nl-be.js":"2ykv","./nl.js":"+s0g","./nn":"uEye","./nn.js":"uEye","./pa-in":"8/+R","./pa-in.js":"8/+R","./pl":"jVdC","./pl.js":"jVdC","./pt":"8mBD","./pt-br":"0tRk","./pt-br.js":"0tRk","./pt.js":"8mBD","./ro":"lyxo","./ro.js":"lyxo","./ru":"lXzo","./ru.js":"lXzo","./sd":"Z4QM","./sd.js":"Z4QM","./se":"//9w","./se.js":"//9w","./si":"7aV9","./si.js":"7aV9","./sk":"e+ae","./sk.js":"e+ae","./sl":"gVVK","./sl.js":"gVVK","./sq":"yPMs","./sq.js":"yPMs","./sr":"zx6S","./sr-cyrl":"E+lV","./sr-cyrl.js":"E+lV","./sr.js":"zx6S","./ss":"Ur1D","./ss.js":"Ur1D","./sv":"X709","./sv.js":"X709","./sw":"dNwA","./sw.js":"dNwA","./ta":"PeUW","./ta.js":"PeUW","./te":"XLvN","./te.js":"XLvN","./tet":"V2x9","./tet.js":"V2x9","./tg":"Oxv6","./tg.js":"Oxv6","./th":"EOgW","./th.js":"EOgW","./tl-ph":"Dzi0","./tl-ph.js":"Dzi0","./tlh":"z3Vd","./tlh.js":"z3Vd","./tr":"DoHr","./tr.js":"DoHr","./tzl":"z1FC","./tzl.js":"z1FC","./tzm":"wQk9","./tzm-latn":"tT3J","./tzm-latn.js":"tT3J","./tzm.js":"wQk9","./ug-cn":"YRex","./ug-cn.js":"YRex","./uk":"raLr","./uk.js":"raLr","./ur":"UpQW","./ur.js":"UpQW","./uz":"Loxo","./uz-latn":"AQ68","./uz-latn.js":"AQ68","./uz.js":"Loxo","./vi":"KSF8","./vi.js":"KSF8","./x-pseudo":"/X5v","./x-pseudo.js":"/X5v","./yo":"fzPg","./yo.js":"fzPg","./zh-cn":"XDpg","./zh-cn.js":"XDpg","./zh-hk":"SatO","./zh-hk.js":"SatO","./zh-tw":"kOpN","./zh-tw.js":"kOpN"};function r(t){var e=a(t);return n(e)}function a(t){if(!n.o(i,t)){var e=new Error("Cannot find module '"+t+"'");throw e.code="MODULE_NOT_FOUND",e}return i[t]}r.keys=function(){return Object.keys(i)},r.resolve=a,t.exports=r,r.id="RnhZ"},"S3/U":function(t,e,n){"use strict";t.exports=function(t){t.Scatter=function(e,n){return n.type="scatter",new t(e,n)}}},S6ln:function(t,e,n){!function(t){"use strict";function e(t,e,n){var i=t+" ";switch(n){case"ss":return i+(1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi");case"m":return e?"jedna minuta":"jedne minute";case"mm":return i+(1===t?"minuta":2===t||3===t||4===t?"minute":"minuta");case"h":return e?"jedan sat":"jednog sata";case"hh":return i+(1===t?"sat":2===t||3===t||4===t?"sata":"sati");case"dd":return i+(1===t?"dan":"dana");case"MM":return i+(1===t?"mjesec":2===t||3===t||4===t?"mjeseca":"mjeseci");case"yy":return i+(1===t?"godina":2===t||3===t||4===t?"godine":"godina")}}t.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:e,m:e,mm:e,h:e,hh:e,d:"dan",dd:e,M:"mjesec",MM:e,y:"godinu",yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},S7Ns:function(t,e,n){"use strict";t.exports=function(t){t.Doughnut=function(e,n){return n.type="doughnut",new t(e,n)}}},SFxW:function(t,e,n){!function(t){"use strict";var e={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};t.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"birne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(t){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(t)},meridiem:function(t,e,n){return t<4?"gec\u0259":t<12?"s\u0259h\u0259r":t<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(t){if(0===t)return t+"-\u0131nc\u0131";var n=t%10;return t+(e[n]||e[t%100-n]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},SatO:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e2d\u5348"===e?t>=11?t:t+12:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:void 0},meridiem:function(t,e,n){var i=100*t+e;return i<600?"\u51cc\u6668":i<900?"\u65e9\u4e0a":i<1130?"\u4e0a\u5348":i<1230?"\u4e2d\u5348":i<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u9031";default:return t}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(n("wd/R"))},Sfow:function(t,e,n){"use strict";var i=n("TC34");e=t.exports={clear:function(t){t.ctx.clearRect(0,0,t.width,t.height)},roundedRect:function(t,e,n,i,r,a){if(a){var o=Math.min(a,i/2),s=Math.min(a,r/2);t.moveTo(e+o,n),t.lineTo(e+i-o,n),t.quadraticCurveTo(e+i,n,e+i,n+s),t.lineTo(e+i,n+r-s),t.quadraticCurveTo(e+i,n+r,e+i-o,n+r),t.lineTo(e+o,n+r),t.quadraticCurveTo(e,n+r,e,n+r-s),t.lineTo(e,n+s),t.quadraticCurveTo(e,n,e+o,n)}else t.rect(e,n,i,r)},drawPoint:function(t,e,n,i,r){var a,o,s,l,u,c;if(!e||"object"!=typeof e||"[object HTMLImageElement]"!==(a=e.toString())&&"[object HTMLCanvasElement]"!==a){if(!(isNaN(n)||n<=0)){switch(e){default:t.beginPath(),t.arc(i,r,n,0,2*Math.PI),t.closePath(),t.fill();break;case"triangle":t.beginPath(),u=(o=3*n/Math.sqrt(3))*Math.sqrt(3)/2,t.moveTo(i-o/2,r+u/3),t.lineTo(i+o/2,r+u/3),t.lineTo(i,r-2*u/3),t.closePath(),t.fill();break;case"rect":c=1/Math.SQRT2*n,t.beginPath(),t.fillRect(i-c,r-c,2*c,2*c),t.strokeRect(i-c,r-c,2*c,2*c);break;case"rectRounded":var d=n/Math.SQRT2,h=i-d,f=r-d,p=Math.SQRT2*n;t.beginPath(),this.roundedRect(t,h,f,p,p,n/2),t.closePath(),t.fill();break;case"rectRot":c=1/Math.SQRT2*n,t.beginPath(),t.moveTo(i-c,r),t.lineTo(i,r+c),t.lineTo(i+c,r),t.lineTo(i,r-c),t.closePath(),t.fill();break;case"cross":t.beginPath(),t.moveTo(i,r+n),t.lineTo(i,r-n),t.moveTo(i-n,r),t.lineTo(i+n,r),t.closePath();break;case"crossRot":t.beginPath(),s=Math.cos(Math.PI/4)*n,l=Math.sin(Math.PI/4)*n,t.moveTo(i-s,r-l),t.lineTo(i+s,r+l),t.moveTo(i-s,r+l),t.lineTo(i+s,r-l),t.closePath();break;case"star":t.beginPath(),t.moveTo(i,r+n),t.lineTo(i,r-n),t.moveTo(i-n,r),t.lineTo(i+n,r),s=Math.cos(Math.PI/4)*n,l=Math.sin(Math.PI/4)*n,t.moveTo(i-s,r-l),t.lineTo(i+s,r+l),t.moveTo(i-s,r+l),t.lineTo(i+s,r-l),t.closePath();break;case"line":t.beginPath(),t.moveTo(i-n,r),t.lineTo(i+n,r),t.closePath();break;case"dash":t.beginPath(),t.moveTo(i,r),t.lineTo(i+n,r),t.closePath()}t.stroke()}}else t.drawImage(e,i-e.width/2,r-e.height/2,e.width,e.height)},clipArea:function(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()},unclipArea:function(t){t.restore()},lineTo:function(t,e,n,i){if(n.steppedLine)return"after"===n.steppedLine&&!i||"after"!==n.steppedLine&&i?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y),void t.lineTo(n.x,n.y);n.tension?t.bezierCurveTo(i?e.controlPointPreviousX:e.controlPointNextX,i?e.controlPointPreviousY:e.controlPointNextY,i?n.controlPointNextX:n.controlPointPreviousX,i?n.controlPointNextY:n.controlPointPreviousY,n.x,n.y):t.lineTo(n.x,n.y)}},i.clear=e.clear,i.drawRoundedRectangle=function(t){t.beginPath(),e.roundedRect.apply(e,arguments),t.closePath()}},T016:function(t,e){t.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},TC34:function(t,e,n){"use strict";var i,r={noop:function(){},uid:(i=0,function(){return i++}),isNullOrUndef:function(t){return null==t},isArray:Array.isArray?Array.isArray:function(t){return"[object Array]"===Object.prototype.toString.call(t)},isObject:function(t){return null!==t&&"[object Object]"===Object.prototype.toString.call(t)},valueOrDefault:function(t,e){return void 0===t?e:t},valueAtIndexOrDefault:function(t,e,n){return r.valueOrDefault(r.isArray(t)?t[e]:t,n)},callback:function(t,e,n){if(t&&"function"==typeof t.call)return t.apply(n,e)},each:function(t,e,n,i){var a,o,s;if(r.isArray(t))if(o=t.length,i)for(a=o-1;a>=0;a--)e.call(n,t[a],a);else for(a=0;a=11?t:t+12:"sore"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"siang":t<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},UpQW:function(t,e,n){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],n=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];t.defineLocale("ur",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(t){return"\u0634\u0627\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}(n("wd/R"))},UqmZ:function(t,e,n){"use strict";var i=n("CDJp"),r=n("K2E3"),a=n("RDha"),o=i.global;i._set("global",{elements:{line:{tension:.4,backgroundColor:o.defaultColor,borderWidth:3,borderColor:o.defaultColor,borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",capBezierPoints:!0,fill:!0}}}),t.exports=r.extend({draw:function(){var t,e,n,i,r=this._view,s=this._chart.ctx,l=r.spanGaps,u=this._children.slice(),c=o.elements.line,d=-1;for(this._loop&&u.length&&u.push(u[0]),s.save(),s.lineCap=r.borderCapStyle||c.borderCapStyle,s.setLineDash&&s.setLineDash(r.borderDash||c.borderDash),s.lineDashOffset=r.borderDashOffset||c.borderDashOffset,s.lineJoin=r.borderJoinStyle||c.borderJoinStyle,s.lineWidth=r.borderWidth||c.borderWidth,s.strokeStyle=r.borderColor||o.defaultColor,s.beginPath(),d=-1,t=0;t=11?t:t+12:"entsambama"===e||"ebusuku"===e?0===t?0:t+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}})}(n("wd/R"))},V2x9:function(t,e,n){!function(t){"use strict";t.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},Vclq:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");t.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,i){return t?/-MMM-/.test(i)?n[t.month()]:e[t.month()]:e},monthsParseExact:!0,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"MMMM [de] D [de] YYYY",LLL:"MMMM [de] D [de] YYYY h:mm A",LLLL:"dddd, MMMM [de] D [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}})}(n("wd/R"))},VgNv:function(t,e,n){"use strict";var i=n("CDJp"),r=n("RDha");i._set("global",{plugins:{}}),t.exports={_plugins:[],_cacheId:0,register:function(t){var e=this._plugins;[].concat(t).forEach((function(t){-1===e.indexOf(t)&&e.push(t)})),this._cacheId++},unregister:function(t){var e=this._plugins;[].concat(t).forEach((function(t){var n=e.indexOf(t);-1!==n&&e.splice(n,1)})),this._cacheId++},clear:function(){this._plugins=[],this._cacheId++},count:function(){return this._plugins.length},getAll:function(){return this._plugins},notify:function(t,e,n){var i,r,a,o,s,l=this.descriptors(t),u=l.length;for(i=0;il;)r-=2*Math.PI;for(;r=s&&r<=l&&o>=n.innerRadius&&o<=n.outerRadius}return!1},getCenterPoint:function(){var t=this._view,e=(t.startAngle+t.endAngle)/2,n=(t.innerRadius+t.outerRadius)/2;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},getArea:function(){var t=this._view;return Math.PI*((t.endAngle-t.startAngle)/(2*Math.PI))*(Math.pow(t.outerRadius,2)-Math.pow(t.innerRadius,2))},tooltipPosition:function(){var t=this._view,e=t.startAngle+(t.endAngle-t.startAngle)/2,n=(t.outerRadius-t.innerRadius)/2+t.innerRadius;return{x:t.x+Math.cos(e)*n,y:t.y+Math.sin(e)*n}},draw:function(){var t=this._chart.ctx,e=this._view,n=e.startAngle,i=e.endAngle;t.beginPath(),t.arc(e.x,e.y,e.outerRadius,n,i),t.arc(e.x,e.y,e.innerRadius,i,n,!0),t.closePath(),t.strokeStyle=e.borderColor,t.lineWidth=e.borderWidth,t.fillStyle=e.backgroundColor,t.fill(),t.lineJoin="bevel",e.borderWidth&&t.stroke()}})},XDpg:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:t>=11?t:t+12},meridiem:function(t,e,n){var i=100*t+e;return i<600?"\u51cc\u6668":i<900?"\u65e9\u4e0a":i<1130?"\u4e0a\u5348":i<1230?"\u4e2d\u5348":i<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u5468";default:return t}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}})}(n("wd/R"))},XLvN:function(t,e,n){!function(t){"use strict";t.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===e?t<4?t:t+12:"\u0c09\u0c26\u0c2f\u0c02"===e?t:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===e?t>=10?t:t+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===e?t+12:void 0},meridiem:function(t,e,n){return t<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":t<10?"\u0c09\u0c26\u0c2f\u0c02":t<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":t<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}})}(n("wd/R"))},"XQh+":function(t,e,n){"use strict";var i=n("CDJp"),r=n("vvH+"),a=n("RDha");i._set("doughnut",{animation:{animateRotate:!0,animateScale:!1},hover:{mode:"single"},legendCallback:function(t){var e=[];e.push('
        ');var n=t.data,i=n.datasets,r=n.labels;if(i.length)for(var a=0;a'),r[a]&&e.push(r[a]),e.push("");return e.push("
      "),e.join("")},legend:{labels:{generateLabels:function(t){var e=t.data;return e.labels.length&&e.datasets.length?e.labels.map((function(n,i){var r=t.getDatasetMeta(0),o=e.datasets[0],s=r.data[i],l=s&&s.custom||{},u=a.valueAtIndexOrDefault,c=t.options.elements.arc;return{text:n,fillStyle:l.backgroundColor?l.backgroundColor:u(o.backgroundColor,i,c.backgroundColor),strokeStyle:l.borderColor?l.borderColor:u(o.borderColor,i,c.borderColor),lineWidth:l.borderWidth?l.borderWidth:u(o.borderWidth,i,c.borderWidth),hidden:isNaN(o.data[i])||r.data[i].hidden,index:i}})):[]}},onClick:function(t,e){var n,i,r,a=e.index,o=this.chart;for(n=0,i=(o.data.datasets||[]).length;n=Math.PI?-1:p<-Math.PI?1:0))+f,g={x:Math.cos(p),y:Math.sin(p)},v={x:Math.cos(m),y:Math.sin(m)},_=p<=0&&m>=0||p<=2*Math.PI&&2*Math.PI<=m,y=p<=.5*Math.PI&&.5*Math.PI<=m||p<=2.5*Math.PI&&2.5*Math.PI<=m,b=p<=-Math.PI&&-Math.PI<=m||p<=Math.PI&&Math.PI<=m,k=p<=.5*-Math.PI&&.5*-Math.PI<=m||p<=1.5*Math.PI&&1.5*Math.PI<=m,w=h/100,M={x:b?-1:Math.min(g.x*(g.x<0?1:w),v.x*(v.x<0?1:w)),y:k?-1:Math.min(g.y*(g.y<0?1:w),v.y*(v.y<0?1:w))},S={x:_?1:Math.max(g.x*(g.x>0?1:w),v.x*(v.x>0?1:w)),y:y?1:Math.max(g.y*(g.y>0?1:w),v.y*(v.y>0?1:w))},x={width:.5*(S.x-M.x),height:.5*(S.y-M.y)};u=Math.min(s/x.width,l/x.height),c={x:-.5*(S.x+M.x),y:-.5*(S.y+M.y)}}n.borderWidth=e.getMaxBorderWidth(d.data),n.outerRadius=Math.max((u-n.borderWidth)/2,0),n.innerRadius=Math.max(h?n.outerRadius/100*h:0,0),n.radiusLength=(n.outerRadius-n.innerRadius)/n.getVisibleDatasetCount(),n.offsetX=c.x*n.outerRadius,n.offsetY=c.y*n.outerRadius,d.total=e.calculateTotal(),e.outerRadius=n.outerRadius-n.radiusLength*e.getRingIndex(e.index),e.innerRadius=Math.max(e.outerRadius-n.radiusLength,0),a.each(d.data,(function(n,i){e.updateElement(n,i,t)}))},updateElement:function(t,e,n){var i=this,r=i.chart,o=r.chartArea,s=r.options,l=s.animation,u=(o.left+o.right)/2,c=(o.top+o.bottom)/2,d=s.rotation,h=s.rotation,f=i.getDataset(),p=n&&l.animateRotate||t.hidden?0:i.calculateCircumference(f.data[e])*(s.circumference/(2*Math.PI));a.extend(t,{_datasetIndex:i.index,_index:e,_model:{x:u+r.offsetX,y:c+r.offsetY,startAngle:d,endAngle:h,circumference:p,outerRadius:n&&l.animateScale?0:i.outerRadius,innerRadius:n&&l.animateScale?0:i.innerRadius,label:(0,a.valueAtIndexOrDefault)(f.label,e,r.data.labels[e])}});var m=t._model;this.removeHoverStyle(t),n&&l.animateRotate||(m.startAngle=0===e?s.rotation:i.getMeta().data[e-1]._model.endAngle,m.endAngle=m.startAngle+m.circumference),t.pivot()},removeHoverStyle:function(e){t.DatasetController.prototype.removeHoverStyle.call(this,e,this.chart.options.elements.arc)},calculateTotal:function(){var t,e=this.getDataset(),n=this.getMeta(),i=0;return a.each(n.data,(function(n,r){t=e.data[r],isNaN(t)||n.hidden||(i+=Math.abs(t))})),i},calculateCircumference:function(t){var e=this.getMeta().total;return e>0&&!isNaN(t)?2*Math.PI*(Math.abs(t)/e):0},getMaxBorderWidth:function(t){for(var e,n,i=0,r=this.index,a=t.length,o=0;o(i=(e=t[o]._model?t[o]._model.borderWidth:0)>i?e:i)?n:i;return i}})}},Y4Rb:function(t,e,n){"use strict";var i=n("RDha"),r=n("g8vO");t.exports=function(t){var e={position:"left",ticks:{callback:r.formatters.logarithmic}},n=t.Scale.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,r=n.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null,t.minNotZero=null;var s=e.stacked;if(void 0===s&&i.each(r,(function(t,e){if(!s){var i=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(i)&&void 0!==i.stack&&(s=!0)}})),e.stacked||s){var l={};i.each(r,(function(r,a){var s=n.getDatasetMeta(a),u=[s.type,void 0===e.stacked&&void 0===s.stack?a:"",s.stack].join(".");n.isDatasetVisible(a)&&o(s)&&(void 0===l[u]&&(l[u]=[]),i.each(r.data,(function(e,n){var i=l[u],r=+t.getRightValue(e);isNaN(r)||s.data[n].hidden||r<0||(i[n]=i[n]||0,i[n]+=r)})))})),i.each(l,(function(e){if(e.length>0){var n=i.min(e),r=i.max(e);t.min=null===t.min?n:Math.min(t.min,n),t.max=null===t.max?r:Math.max(t.max,r)}}))}else i.each(r,(function(e,r){var a=n.getDatasetMeta(r);n.isDatasetVisible(r)&&o(a)&&i.each(e.data,(function(e,n){var i=+t.getRightValue(e);isNaN(i)||a.data[n].hidden||i<0||((null===t.min||it.max)&&(t.max=i),0!==i&&(null===t.minNotZero||i0?t.min:t.max<1?Math.pow(10,Math.floor(i.log10(t.max))):1)},buildTicks:function(){var t=this,e=t.options.ticks,n=!t.isHorizontal(),r=t.ticks=function(t,e){var n,r,a=[],o=i.valueOrDefault,s=o(t.min,Math.pow(10,Math.floor(i.log10(e.min)))),l=Math.floor(i.log10(e.max)),u=Math.ceil(e.max/Math.pow(10,l));0===s?(n=Math.floor(i.log10(e.minNotZero)),r=Math.floor(e.minNotZero/Math.pow(10,n)),a.push(s),s=r*Math.pow(10,n)):(n=Math.floor(i.log10(s)),r=Math.floor(s/Math.pow(10,n)));var c=n<0?Math.pow(10,Math.abs(n)):1;do{a.push(s),10==++r&&(r=1,c=++n>=0?1:c),s=Math.round(r*Math.pow(10,n)*c)/c}while(n=11?t:t+12},meridiem:function(t,e,n){var i=100*t+e;return i<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":i<900?"\u0633\u06d5\u06be\u06d5\u0631":i<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":i<1230?"\u0686\u06c8\u0634":i<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return t+"-\u06be\u06d5\u067e\u062a\u06d5";default:return t}},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:7}})}(n("wd/R"))},YSsK:function(t,e,n){"use strict";var i=n("CDJp"),r=n("RDha"),a=n("g8vO");t.exports=function(t){var e={position:"left",ticks:{callback:a.formatters.linear}},n=t.LinearScaleBase.extend({determineDataLimits:function(){var t=this,e=t.options,n=t.chart,i=n.data.datasets,a=t.isHorizontal();function o(e){return a?e.xAxisID===t.id:e.yAxisID===t.id}t.min=null,t.max=null;var s=e.stacked;if(void 0===s&&r.each(i,(function(t,e){if(!s){var i=n.getDatasetMeta(e);n.isDatasetVisible(e)&&o(i)&&void 0!==i.stack&&(s=!0)}})),e.stacked||s){var l={};r.each(i,(function(i,a){var s=n.getDatasetMeta(a),u=[s.type,void 0===e.stacked&&void 0===s.stack?a:"",s.stack].join(".");void 0===l[u]&&(l[u]={positiveValues:[],negativeValues:[]});var c=l[u].positiveValues,d=l[u].negativeValues;n.isDatasetVisible(a)&&o(s)&&r.each(i.data,(function(n,i){var r=+t.getRightValue(n);isNaN(r)||s.data[i].hidden||(c[i]=c[i]||0,d[i]=d[i]||0,e.relativePoints?c[i]=100:r<0?d[i]+=r:c[i]+=r)}))})),r.each(l,(function(e){var n=e.positiveValues.concat(e.negativeValues),i=r.min(n),a=r.max(n);t.min=null===t.min?i:Math.min(t.min,i),t.max=null===t.max?a:Math.max(t.max,a)}))}else r.each(i,(function(e,i){var a=n.getDatasetMeta(i);n.isDatasetVisible(i)&&o(a)&&r.each(e.data,(function(e,n){var i=+t.getRightValue(e);isNaN(i)||a.data[n].hidden||((null===t.min||it.max)&&(t.max=i))}))}));t.min=isFinite(t.min)&&!isNaN(t.min)?t.min:0,t.max=isFinite(t.max)&&!isNaN(t.max)?t.max:1,this.handleTickRangeOptions()},getTickLimit:function(){var t,e=this.options.ticks;if(this.isHorizontal())t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.width/50));else{var n=r.valueOrDefault(e.fontSize,i.global.defaultFontSize);t=Math.min(e.maxTicksLimit?e.maxTicksLimit:11,Math.ceil(this.height/(2*n)))}return t},handleDirectionalChanges:function(){this.isHorizontal()||this.ticks.reverse()},getLabelForIndex:function(t,e){return+this.getRightValue(this.chart.data.datasets[e].data[t])},getPixelForValue:function(t){var e=this,n=e.start,i=+e.getRightValue(t),r=e.end-n;return e.isHorizontal()?e.left+e.width/r*(i-n):e.bottom-e.height/r*(i-n)},getValueForPixel:function(t){var e=this,n=e.isHorizontal();return e.start+(n?t-e.left:e.bottom-t)/(n?e.width:e.height)*(e.end-e.start)},getPixelForTick:function(t){return this.getPixelForValue(this.ticksAsNumbers[t])}});t.scaleService.registerScaleType("linear",n,e)}},YuTi:function(t,e){t.exports=function(t){return t.webpackPolyfill||(t.deprecate=function(){},t.paths=[],t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),t.webpackPolyfill=1),t}},Z4QM:function(t,e,n){!function(t){"use strict";var e=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],n=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];t.defineLocale("sd",{months:e,monthsShort:e,weekdays:n,weekdaysShort:n,weekdaysMin:n,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(t){return"\u0634\u0627\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/\u060c/g,",")},postformat:function(t){return t.replace(/,/g,"\u060c")},week:{dow:1,doy:4}})}(n("wd/R"))},ZAMP:function(t,e,n){!function(t){"use strict";t.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(t,e){return 12===t&&(t=0),"pagi"===e?t:"tengahari"===e?t>=11?t:t+12:"petang"===e||"malam"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"pagi":t<15?"tengahari":t<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}})}(n("wd/R"))},ZANz:function(t,e,n){"use strict";var i=n("CDJp"),r=n("vvH+"),a=n("RDha");i._set("bar",{hover:{mode:"label"},scales:{xAxes:[{type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}],yAxes:[{type:"linear"}]}}),i._set("horizontalBar",{hover:{mode:"index",axis:"y"},scales:{xAxes:[{type:"linear",position:"bottom"}],yAxes:[{position:"left",type:"category",categoryPercentage:.8,barPercentage:.9,offset:!0,gridLines:{offsetGridLines:!0}}]},elements:{rectangle:{borderSkipped:"left"}},tooltips:{callbacks:{title:function(t,e){var n="";return t.length>0&&(t[0].yLabel?n=t[0].yLabel:e.labels.length>0&&t[0].index0?Math.min(o,i-n):o,n=i;return o}(n,u):-1,pixels:u,start:s,end:l,stackCount:i,scale:n}},calculateBarValuePixels:function(t,e){var n,i,r,a,o,s,l=this.chart,u=this.getMeta(),c=this.getValueScale(),d=l.data.datasets,h=c.getRightValue(d[t].data[e]),f=c.options.stacked,p=u.stack,m=0;if(f||void 0===f&&void 0!==p)for(n=0;n=0&&r>0)&&(m+=r));return a=c.getPixelForValue(m),{size:s=((o=c.getPixelForValue(m+h))-a)/2,base:a,head:o,center:o+s/2}},calculateBarIndexPixels:function(t,e,n){var i=n.scale.options,r="flex"===i.barThickness?function(t,e,n){var i=e.pixels,r=i[t],a=t>0?i[t-1]:null,o=t11?n?"p.t.m.":"P.T.M.":n?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}})}(n("wd/R"))},aB2c:function(t,e,n){"use strict";var i=n("CDJp"),r=n("vvH+"),a=n("RDha");i._set("radar",{scale:{type:"radialLinear"},elements:{line:{tension:0}}}),t.exports=function(t){t.controllers.radar=t.DatasetController.extend({datasetElementType:r.Line,dataElementType:r.Point,linkScales:a.noop,update:function(t){var e=this,n=e.getMeta(),i=n.data,r=n.dataset.custom||{},o=e.getDataset(),s=e.chart.options.elements.line,l=e.chart.scale;void 0!==o.tension&&void 0===o.lineTension&&(o.lineTension=o.tension),a.extend(n.dataset,{_datasetIndex:e.index,_scale:l,_children:i,_loop:!0,_model:{tension:r.tension?r.tension:a.valueOrDefault(o.lineTension,s.tension),backgroundColor:r.backgroundColor?r.backgroundColor:o.backgroundColor||s.backgroundColor,borderWidth:r.borderWidth?r.borderWidth:o.borderWidth||s.borderWidth,borderColor:r.borderColor?r.borderColor:o.borderColor||s.borderColor,fill:r.fill?r.fill:void 0!==o.fill?o.fill:s.fill,borderCapStyle:r.borderCapStyle?r.borderCapStyle:o.borderCapStyle||s.borderCapStyle,borderDash:r.borderDash?r.borderDash:o.borderDash||s.borderDash,borderDashOffset:r.borderDashOffset?r.borderDashOffset:o.borderDashOffset||s.borderDashOffset,borderJoinStyle:r.borderJoinStyle?r.borderJoinStyle:o.borderJoinStyle||s.borderJoinStyle}}),n.dataset.pivot(),a.each(i,(function(n,i){e.updateElement(n,i,t)}),e),e.updateBezierControlPoints()},updateElement:function(t,e,n){var i=this,r=t.custom||{},o=i.getDataset(),s=i.chart.scale,l=i.chart.options.elements.point,u=s.getPointPositionForValue(e,o.data[e]);void 0!==o.radius&&void 0===o.pointRadius&&(o.pointRadius=o.radius),void 0!==o.hitRadius&&void 0===o.pointHitRadius&&(o.pointHitRadius=o.hitRadius),a.extend(t,{_datasetIndex:i.index,_index:e,_scale:s,_model:{x:n?s.xCenter:u.x,y:n?s.yCenter:u.y,tension:r.tension?r.tension:a.valueOrDefault(o.lineTension,i.chart.options.elements.line.tension),radius:r.radius?r.radius:a.valueAtIndexOrDefault(o.pointRadius,e,l.radius),backgroundColor:r.backgroundColor?r.backgroundColor:a.valueAtIndexOrDefault(o.pointBackgroundColor,e,l.backgroundColor),borderColor:r.borderColor?r.borderColor:a.valueAtIndexOrDefault(o.pointBorderColor,e,l.borderColor),borderWidth:r.borderWidth?r.borderWidth:a.valueAtIndexOrDefault(o.pointBorderWidth,e,l.borderWidth),pointStyle:r.pointStyle?r.pointStyle:a.valueAtIndexOrDefault(o.pointStyle,e,l.pointStyle),hitRadius:r.hitRadius?r.hitRadius:a.valueAtIndexOrDefault(o.pointHitRadius,e,l.hitRadius)}}),t._model.skip=r.skip?r.skip:isNaN(t._model.x)||isNaN(t._model.y)},updateBezierControlPoints:function(){var t=this.chart.chartArea,e=this.getMeta();a.each(e.data,(function(n,i){var r=n._model,o=a.splineCurve(a.previousItem(e.data,i,!0)._model,r,a.nextItem(e.data,i,!0)._model,r.tension);r.controlPointPreviousX=Math.max(Math.min(o.previous.x,t.right),t.left),r.controlPointPreviousY=Math.max(Math.min(o.previous.y,t.bottom),t.top),r.controlPointNextX=Math.max(Math.min(o.next.x,t.right),t.left),r.controlPointNextY=Math.max(Math.min(o.next.y,t.bottom),t.top),n.pivot()}))},setHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,r=t._model;r.radius=n.hoverRadius?n.hoverRadius:a.valueAtIndexOrDefault(e.pointHoverRadius,i,this.chart.options.elements.point.hoverRadius),r.backgroundColor=n.hoverBackgroundColor?n.hoverBackgroundColor:a.valueAtIndexOrDefault(e.pointHoverBackgroundColor,i,a.getHoverColor(r.backgroundColor)),r.borderColor=n.hoverBorderColor?n.hoverBorderColor:a.valueAtIndexOrDefault(e.pointHoverBorderColor,i,a.getHoverColor(r.borderColor)),r.borderWidth=n.hoverBorderWidth?n.hoverBorderWidth:a.valueAtIndexOrDefault(e.pointHoverBorderWidth,i,r.borderWidth)},removeHoverStyle:function(t){var e=this.chart.data.datasets[t._datasetIndex],n=t.custom||{},i=t._index,r=t._model,o=this.chart.options.elements.point;r.radius=n.radius?n.radius:a.valueAtIndexOrDefault(e.pointRadius,i,o.radius),r.backgroundColor=n.backgroundColor?n.backgroundColor:a.valueAtIndexOrDefault(e.pointBackgroundColor,i,o.backgroundColor),r.borderColor=n.borderColor?n.borderColor:a.valueAtIndexOrDefault(e.pointBorderColor,i,o.borderColor),r.borderWidth=n.borderWidth?n.borderWidth:a.valueAtIndexOrDefault(e.pointBorderWidth,i,o.borderWidth)}})}},aIdf:function(t,e,n){!function(t){"use strict";function e(t,e,n){return t+" "+function(t,e){return 2===e?function(t){var e={m:"v",b:"v",d:"z"};return void 0===e[t.charAt(0)]?t:e[t.charAt(0)]+t.substring(1)}(t):t}({mm:"munutenn",MM:"miz",dd:"devezh"}[n],t)}t.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:e,h:"un eur",hh:"%d eur",d:"un devezh",dd:e,M:"ur miz",MM:e,y:"ur bloaz",yy:function(t){switch(function t(e){return e>9?t(e%10):e}(t)){case 1:case 3:case 4:case 5:case 9:return t+" bloaz";default:return t+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(t){return t+(1===t?"a\xf1":"vet")},week:{dow:1,doy:4}})}(n("wd/R"))},aIsn:function(t,e,n){!function(t){"use strict";t.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},aQkU:function(t,e,n){!function(t){"use strict";t.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-\u0435\u0432":0===n?t+"-\u0435\u043d":n>10&&n<20?t+"-\u0442\u0438":1===e?t+"-\u0432\u0438":2===e?t+"-\u0440\u0438":7===e||8===e?t+"-\u043c\u0438":t+"-\u0442\u0438"},week:{dow:1,doy:7}})}(n("wd/R"))},b1Dy:function(t,e,n){!function(t){"use strict";t.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(t){var e=t%10;return t+(1==~~(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")},week:{dow:1,doy:4}})}(n("wd/R"))},bOMt:function(t,e,n){!function(t){"use strict";t.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},bXm7:function(t,e,n){!function(t){"use strict";var e={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};t.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},bYM6:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}})}(n("wd/R"))},bidN:function(t,e,n){"use strict";var i=n("CDJp"),r=n("vvH+"),a=n("RDha");i._set("bubble",{hover:{mode:"single"},scales:{xAxes:[{type:"linear",position:"bottom",id:"x-axis-0"}],yAxes:[{type:"linear",position:"left",id:"y-axis-0"}]},tooltips:{callbacks:{title:function(){return""},label:function(t,e){return(e.datasets[t.datasetIndex].label||"")+": ("+t.xLabel+", "+t.yLabel+", "+e.datasets[t.datasetIndex].data[t.index].r+")"}}}}),t.exports=function(t){t.controllers.bubble=t.DatasetController.extend({dataElementType:r.Point,update:function(t){var e=this,n=e.getMeta();a.each(n.data,(function(n,i){e.updateElement(n,i,t)}))},updateElement:function(t,e,n){var i=this,r=i.getMeta(),a=t.custom||{},o=i.getScaleForId(r.xAxisID),s=i.getScaleForId(r.yAxisID),l=i._resolveElementOptions(t,e),u=i.getDataset().data[e],c=i.index,d=n?o.getPixelForDecimal(.5):o.getPixelForValue("object"==typeof u?u:NaN,e,c),h=n?s.getBasePixel():s.getPixelForValue(u,e,c);t._xScale=o,t._yScale=s,t._options=l,t._datasetIndex=c,t._index=e,t._model={backgroundColor:l.backgroundColor,borderColor:l.borderColor,borderWidth:l.borderWidth,hitRadius:l.hitRadius,pointStyle:l.pointStyle,radius:n?0:l.radius,skip:a.skip||isNaN(d)||isNaN(h),x:d,y:h},t.pivot()},setHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=a.valueOrDefault(n.hoverBackgroundColor,a.getHoverColor(n.backgroundColor)),e.borderColor=a.valueOrDefault(n.hoverBorderColor,a.getHoverColor(n.borderColor)),e.borderWidth=a.valueOrDefault(n.hoverBorderWidth,n.borderWidth),e.radius=n.radius+n.hoverRadius},removeHoverStyle:function(t){var e=t._model,n=t._options;e.backgroundColor=n.backgroundColor,e.borderColor=n.borderColor,e.borderWidth=n.borderWidth,e.radius=n.radius},_resolveElementOptions:function(t,e){var n,i,r,o=this.chart,s=o.data.datasets[this.index],l=t.custom||{},u=o.options.elements.point,c=a.options.resolve,d=s.data[e],h={},f={chart:o,dataIndex:e,dataset:s,datasetIndex:this.index},p=["backgroundColor","borderColor","borderWidth","hoverBackgroundColor","hoverBorderColor","hoverBorderWidth","hoverRadius","hitRadius","pointStyle"];for(n=0,i=p.length;n=20?"ste":"de")},week:{dow:1,doy:4}})}(n("wd/R"))},cdu6:function(t,e,n){"use strict";var i=n("CDJp"),r=n("K2E3"),a=n("RDha"),o=n("g8vO");function s(t){var e,n,i=[];for(e=0,n=t.length;eh&&lt.maxHeight){l--;break}l++,d=u*c}t.labelRotation=l},afterCalculateTickRotation:function(){a.callback(this.options.afterCalculateTickRotation,[this])},beforeFit:function(){a.callback(this.options.beforeFit,[this])},fit:function(){var t=this,i=t.minSize={width:0,height:0},r=s(t._ticks),l=t.options,u=l.ticks,c=l.scaleLabel,d=l.gridLines,h=l.display,f=t.isHorizontal(),p=n(u),m=l.gridLines.tickMarkLength;if(i.width=f?t.isFullWidth()?t.maxWidth-t.margins.left-t.margins.right:t.maxWidth:h&&d.drawTicks?m:0,i.height=f?h&&d.drawTicks?m:0:t.maxHeight,c.display&&h){var g=o(c)+a.options.toPadding(c.padding).height;f?i.height+=g:i.width+=g}if(u.display&&h){var v=a.longestText(t.ctx,p.font,r,t.longestTextCache),_=a.numberOfLabelLines(r),y=.5*p.size,b=t.options.ticks.padding;if(f){t.longestLabelWidth=v;var k=a.toRadians(t.labelRotation),w=Math.cos(k),M=Math.sin(k);i.height=Math.min(t.maxHeight,i.height+(M*v+p.size*_+y*(_-1)+y)+b),t.ctx.font=p.font;var S=e(t.ctx,r[0],p.font),x=e(t.ctx,r[r.length-1],p.font);0!==t.labelRotation?(t.paddingLeft="bottom"===l.position?w*S+3:w*y+3,t.paddingRight="bottom"===l.position?w*y+3:w*x+3):(t.paddingLeft=S/2+3,t.paddingRight=x/2+3)}else u.mirror?v=0:v+=b+y,i.width=Math.min(t.maxWidth,i.width+v),t.paddingTop=p.size/2,t.paddingBottom=p.size/2}t.handleMargins(),t.width=i.width,t.height=i.height},handleMargins:function(){var t=this;t.margins&&(t.paddingLeft=Math.max(t.paddingLeft-t.margins.left,0),t.paddingTop=Math.max(t.paddingTop-t.margins.top,0),t.paddingRight=Math.max(t.paddingRight-t.margins.right,0),t.paddingBottom=Math.max(t.paddingBottom-t.margins.bottom,0))},afterFit:function(){a.callback(this.options.afterFit,[this])},isHorizontal:function(){return"top"===this.options.position||"bottom"===this.options.position},isFullWidth:function(){return this.options.fullWidth},getRightValue:function(t){if(a.isNullOrUndef(t))return NaN;if("number"==typeof t&&!isFinite(t))return NaN;if(t)if(this.isHorizontal()){if(void 0!==t.x)return this.getRightValue(t.x)}else if(void 0!==t.y)return this.getRightValue(t.y);return t},getLabelForIndex:a.noop,getPixelForValue:a.noop,getValueForPixel:a.noop,getPixelForTick:function(t){var e=this,n=e.options.offset;if(e.isHorizontal()){var i=(e.width-(e.paddingLeft+e.paddingRight))/Math.max(e._ticks.length-(n?0:1),1),r=i*t+e.paddingLeft;return n&&(r+=i/2),e.left+Math.round(r)+(e.isFullWidth()?e.margins.left:0)}return e.top+t*((e.height-(e.paddingTop+e.paddingBottom))/(e._ticks.length-1))},getPixelForDecimal:function(t){var e=this;return e.isHorizontal()?e.left+Math.round((e.width-(e.paddingLeft+e.paddingRight))*t+e.paddingLeft)+(e.isFullWidth()?e.margins.left:0):e.top+t*e.height},getBasePixel:function(){return this.getPixelForValue(this.getBaseValue())},getBaseValue:function(){var t=this.min,e=this.max;return this.beginAtZero?0:t<0&&e<0?e:t>0&&e>0?t:0},_autoSkip:function(t){var e,n,i,r,o=this,s=o.isHorizontal(),l=o.options.ticks.minor,u=t.length,c=a.toRadians(o.labelRotation),d=Math.cos(c),h=o.longestLabelWidth*d,f=[];for(l.maxTicksLimit&&(r=l.maxTicksLimit),s&&(e=!1,(h+l.autoSkipPadding)*u>o.width-(o.paddingLeft+o.paddingRight)&&(e=1+Math.floor((h+l.autoSkipPadding)*u/(o.width-(o.paddingLeft+o.paddingRight)))),r&&u>r&&(e=Math.max(e,Math.floor(u/r)))),n=0;n1&&n%e>0||n%e==0&&n+e>=u)&&n!==u-1&&delete i.label,f.push(i);return f},draw:function(t){var e=this,r=e.options;if(r.display){var s=e.ctx,u=i.global,c=r.ticks.minor,d=r.ticks.major||c,h=r.gridLines,f=r.scaleLabel,p=0!==e.labelRotation,m=e.isHorizontal(),g=c.autoSkip?e._autoSkip(e.getTicks()):e.getTicks(),v=a.valueOrDefault(c.fontColor,u.defaultFontColor),_=n(c),y=a.valueOrDefault(d.fontColor,u.defaultFontColor),b=n(d),k=h.drawTicks?h.tickMarkLength:0,w=a.valueOrDefault(f.fontColor,u.defaultFontColor),M=n(f),S=a.options.toPadding(f.padding),x=a.toRadians(e.labelRotation),C=[],D=e.options.gridLines.lineWidth,L="right"===r.position?e.right:e.right-D-k,T="right"===r.position?e.right+k:e.right,E="bottom"===r.position?e.top+D:e.bottom-k-D,P="bottom"===r.position?e.top+D+k:e.bottom+D;if(a.each(g,(function(n,i){if(!a.isNullOrUndef(n.label)){var o,s,d,f,v,_,y,b,w,M,S,O,A,I,Y=n.label;i===e.zeroLineIndex&&r.offset===h.offsetGridLines?(o=h.zeroLineWidth,s=h.zeroLineColor,d=h.zeroLineBorderDash,f=h.zeroLineBorderDashOffset):(o=a.valueAtIndexOrDefault(h.lineWidth,i),s=a.valueAtIndexOrDefault(h.color,i),d=a.valueOrDefault(h.borderDash,u.borderDash),f=a.valueOrDefault(h.borderDashOffset,u.borderDashOffset));var F="middle",R="middle",N=c.padding;if(m){var H=k+N;"bottom"===r.position?(R=p?"middle":"top",F=p?"right":"center",I=e.top+H):(R=p?"middle":"bottom",F=p?"left":"center",I=e.bottom-H);var j=l(e,i,h.offsetGridLines&&g.length>1);j1);z1&&t<5}function r(t,e,n,r){var a=t+" ";switch(n){case"s":return e||r?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return e||r?a+(i(t)?"sekundy":"sek\xfand"):a+"sekundami";case"m":return e?"min\xfata":r?"min\xfatu":"min\xfatou";case"mm":return e||r?a+(i(t)?"min\xfaty":"min\xfat"):a+"min\xfatami";case"h":return e?"hodina":r?"hodinu":"hodinou";case"hh":return e||r?a+(i(t)?"hodiny":"hod\xedn"):a+"hodinami";case"d":return e||r?"de\u0148":"d\u0148om";case"dd":return e||r?a+(i(t)?"dni":"dn\xed"):a+"d\u0148ami";case"M":return e||r?"mesiac":"mesiacom";case"MM":return e||r?a+(i(t)?"mesiace":"mesiacov"):a+"mesiacmi";case"y":return e||r?"rok":"rokom";case"yy":return e||r?a+(i(t)?"roky":"rokov"):a+"rokmi"}}t.defineLocale("sk",{months:e,monthsShort:n,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:r,ss:r,m:r,mm:r,h:r,hh:r,d:r,dd:r,M:r,MM:r,y:r,yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},fELs:function(t,e,n){"use strict";var i=n("RDha");function r(t,e){return i.where(t,(function(t){return t.position===e}))}function a(t,e){t.forEach((function(t,e){return t._tmpIndex_=e,t})),t.sort((function(t,n){var i=e?n:t,r=e?t:n;return i.weight===r.weight?i._tmpIndex_-r._tmpIndex_:i.weight-r.weight})),t.forEach((function(t){delete t._tmpIndex_}))}t.exports={defaults:{},addBox:function(t,e){t.boxes||(t.boxes=[]),e.fullWidth=e.fullWidth||!1,e.position=e.position||"top",e.weight=e.weight||0,t.boxes.push(e)},removeBox:function(t,e){var n=t.boxes?t.boxes.indexOf(e):-1;-1!==n&&t.boxes.splice(n,1)},configure:function(t,e,n){for(var i,r=["fullWidth","position","weight"],a=r.length,o=0;o3?n[2]-n[1]:n[1]-n[0];Math.abs(r)>1&&t!==Math.floor(t)&&(r=t-Math.floor(t));var a=i.log10(Math.abs(r)),o="";if(0!==t){var s=-1*Math.floor(a);s=Math.max(Math.min(s,20),0),o=t.toFixed(s)}else o="0";return o},logarithmic:function(t,e,n){var r=t/Math.pow(10,Math.floor(i.log10(t)));return 0===t?"0":1===r||2===r||5===r||0===e||e===n.length-1?t.toExponential():""}}}},gVVK:function(t,e,n){!function(t){"use strict";function e(t,e,n,i){var r=t+" ";switch(n){case"s":return e||i?"nekaj sekund":"nekaj sekundami";case"ss":return r+(1===t?e?"sekundo":"sekundi":2===t?e||i?"sekundi":"sekundah":t<5?e||i?"sekunde":"sekundah":"sekund");case"m":return e?"ena minuta":"eno minuto";case"mm":return r+(1===t?e?"minuta":"minuto":2===t?e||i?"minuti":"minutama":t<5?e||i?"minute":"minutami":e||i?"minut":"minutami");case"h":return e?"ena ura":"eno uro";case"hh":return r+(1===t?e?"ura":"uro":2===t?e||i?"uri":"urama":t<5?e||i?"ure":"urami":e||i?"ur":"urami");case"d":return e||i?"en dan":"enim dnem";case"dd":return r+(1===t?e||i?"dan":"dnem":2===t?e||i?"dni":"dnevoma":e||i?"dni":"dnevi");case"M":return e||i?"en mesec":"enim mesecem";case"MM":return r+(1===t?e||i?"mesec":"mesecem":2===t?e||i?"meseca":"mesecema":t<5?e||i?"mesece":"meseci":e||i?"mesecev":"meseci");case"y":return e||i?"eno leto":"enim letom";case"yy":return r+(1===t?e||i?"leto":"letom":2===t?e||i?"leti":"letoma":t<5?e||i?"leta":"leti":e||i?"let":"leti")}}t.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))},gekB:function(t,e,n){!function(t){"use strict";var e="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),n=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",e[7],e[8],e[9]];function i(t,i,r,a){var o="";switch(r){case"s":return a?"muutaman sekunnin":"muutama sekunti";case"ss":return a?"sekunnin":"sekuntia";case"m":return a?"minuutin":"minuutti";case"mm":o=a?"minuutin":"minuuttia";break;case"h":return a?"tunnin":"tunti";case"hh":o=a?"tunnin":"tuntia";break;case"d":return a?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":o=a?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return a?"kuukauden":"kuukausi";case"MM":o=a?"kuukauden":"kuukautta";break;case"y":return a?"vuoden":"vuosi";case"yy":o=a?"vuoden":"vuotta"}return function(t,i){return t<10?i?n[t]:e[t]:t}(t,a)+" "+o}t.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:i,ss:i,m:i,mm:i,h:i,hh:i,d:i,dd:i,M:i,MM:i,y:i,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},gjCT:function(t,e,n){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};t.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(t){return t.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,(function(t){return n[t]})).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"\u060c")},week:{dow:0,doy:6}})}(n("wd/R"))},hKrs:function(t,e,n){!function(t){"use strict";t.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(t){var e=t%10,n=t%100;return 0===t?t+"-\u0435\u0432":0===n?t+"-\u0435\u043d":n>10&&n<20?t+"-\u0442\u0438":1===e?t+"-\u0432\u0438":2===e?t+"-\u0440\u0438":7===e||8===e?t+"-\u043c\u0438":t+"-\u0442\u0438"},week:{dow:1,doy:7}})}(n("wd/R"))},honF:function(t,e,n){!function(t){"use strict";var e={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},n={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};t.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(t){return t.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},week:{dow:1,doy:4}})}(n("wd/R"))},iEDd:function(t,e,n){!function(t){"use strict";t.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(t){return 0===t.indexOf("un")?"n"+t:"en "+t},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},iM7B:function(t,e,n){"use strict";var i=n("RDha"),r=n("Hg4g"),a=n("q8Fl");t.exports=i.extend({initialize:function(){},acquireContext:function(){},releaseContext:function(){},addEventListener:function(){},removeEventListener:function(){}},a._enabled?a:r)},iYGd:function(t,e,n){"use strict";t.exports=function(t){t.Radar=function(e,n){return n.type="radar",new t(e,n)}}},iYuL:function(t,e,n){!function(t){"use strict";var e="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),n="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),i=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],r=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;t.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(t,i){return t?/-MMM-/.test(i)?n[t.month()]:e[t.month()]:e},monthsRegex:r,monthsShortRegex:r,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:i,longMonthsParse:i,shortMonthsParse:i,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}})}(n("wd/R"))},jUeY:function(t,e,n){!function(t){"use strict";t.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(t,e){return t?"string"==typeof e&&/D/.test(e.substring(0,e.indexOf("MMMM")))?this._monthsGenitiveEl[t.month()]:this._monthsNominativeEl[t.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(t,e,n){return t>11?n?"\u03bc\u03bc":"\u039c\u039c":n?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(t){return"\u03bc"===(t+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(t,e){var n,i=this._calendarEl[t],r=e&&e.hours();return((n=i)instanceof Function||"[object Function]"===Object.prototype.toString.call(n))&&(i=i.apply(e)),i.replace("{}",r%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}})}(n("wd/R"))},jVdC:function(t,e,n){!function(t){"use strict";var e="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),n="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function i(t){return t%10<5&&t%10>1&&~~(t/10)%10!=1}function r(t,e,n){var r=t+" ";switch(n){case"ss":return r+(i(t)?"sekundy":"sekund");case"m":return e?"minuta":"minut\u0119";case"mm":return r+(i(t)?"minuty":"minut");case"h":return e?"godzina":"godzin\u0119";case"hh":return r+(i(t)?"godziny":"godzin");case"MM":return r+(i(t)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return r+(i(t)?"lata":"lat")}}t.defineLocale("pl",{months:function(t,i){return t?""===i?"("+n[t.month()]+"|"+e[t.month()]+")":/D MMMM/.test(i)?n[t.month()]:e[t.month()]:e},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:r,m:r,mm:r,h:r,hh:r,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:r,y:"rok",yy:r},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},jXIB:function(t,e,n){"use strict";t.exports={},t.exports.filler=n("vpM6"),t.exports.legend=n("AX6q"),t.exports.title=n("mjYD")},jfSC:function(t,e,n){!function(t){"use strict";var e={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},n={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};t.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(t){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(t)},meridiem:function(t,e,n){return t<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"\u062b\u0627\u0646\u06cc\u0647 d%",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(t){return t.replace(/[\u06f0-\u06f9]/g,(function(t){return n[t]})).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}})}(n("wd/R"))},jnO4:function(t,e,n){!function(t){"use strict";var e={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},n={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},i=function(t){return 0===t?0:1===t?1:2===t?2:t%100>=3&&t%100<=10?3:t%100>=11?4:5},r={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},a=function(t){return function(e,n,a,o){var s=i(e),l=r[t][i(e)];return 2===s&&(l=l[n?0:1]),l.replace(/%d/i,e)}},o=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];t.defineLocale("ar",{months:o,monthsShort:o,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(t){return"\u0645"===t},meridiem:function(t,e,n){return t<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:a("s"),ss:a("s"),m:a("m"),mm:a("m"),h:a("h"),hh:a("h"),d:a("d"),dd:a("d"),M:a("M"),MM:a("M"),y:a("y"),yy:a("y")},preparse:function(t){return t.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,(function(t){return n[t]})).replace(/\u060c/g,",")},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]})).replace(/,/g,"\u060c")},week:{dow:6,doy:12}})}(n("wd/R"))},kB5k:function(t,e,n){var i;!function(r){"use strict";var a,o=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,s=Math.ceil,l=Math.floor,u="[BigNumber Error] ",c=u+"Number primitive has more than 15 significant digits: ",d=1e14,h=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],f=1e9;function p(t){var e=0|t;return t>0||t===e?e:e-1}function m(t){for(var e,n,i=1,r=t.length,a=t[0]+"";iu^n?1:-1;for(s=(l=r.length)<(u=a.length)?l:u,o=0;oa[o]^n?1:-1;return l==u?0:l>u^n?1:-1}function v(t,e,n,i){if(tn||t!==(t<0?s(t):l(t)))throw Error(u+(i||"Argument")+("number"==typeof t?tn?" out of range: ":" not an integer: ":" not a primitive number: ")+t)}function _(t){return"[object Array]"==Object.prototype.toString.call(t)}function y(t){var e=t.c.length-1;return p(t.e/14)==e&&t.c[e]%2!=0}function b(t,e){return(t.length>1?t.charAt(0)+"."+t.slice(1):t)+(e<0?"e":"e+")+e}function k(t,e,n){var i,r;if(e<0){for(r=n+".";++e;r+=n);t=r+t}else if(++e>(i=t.length)){for(r=n,e-=i;--e;r+=n);t+=r}else e=10;d/=10,u++);return m.e=u,void(m.c=[t])}p=t+""}else{if(!o.test(p=t+""))return r(m,p,h);m.s=45==p.charCodeAt(0)?(p=p.slice(1),-1):1}(u=p.indexOf("."))>-1&&(p=p.replace(".","")),(d=p.search(/e/i))>0?(u<0&&(u=d),u+=+p.slice(d+1),p=p.substring(0,d)):u<0&&(u=p.length)}else{if(v(e,2,H.length,"Base"),p=t+"",10==e)return W(m=new j(t instanceof j?t:p),T+m.e+1,E);if(h="number"==typeof t){if(0*t!=0)return r(m,p,h,e);if(m.s=1/t<0?(p=p.slice(1),-1):1,j.DEBUG&&p.replace(/^0\.0*|\./,"").length>15)throw Error(c+t);h=!1}else m.s=45===p.charCodeAt(0)?(p=p.slice(1),-1):1;for(n=H.slice(0,e),u=d=0,f=p.length;du){u=f;continue}}else if(!s&&(p==p.toUpperCase()&&(p=p.toLowerCase())||p==p.toLowerCase()&&(p=p.toUpperCase()))){s=!0,d=-1,u=0;continue}return r(m,t+"",h,e)}(u=(p=i(p,e,10,m.s)).indexOf("."))>-1?p=p.replace(".",""):u=p.length}for(d=0;48===p.charCodeAt(d);d++);for(f=p.length;48===p.charCodeAt(--f););if(p=p.slice(d,++f)){if(f-=d,h&&j.DEBUG&&f>15&&(t>9007199254740991||t!==l(t)))throw Error(c+m.s*t);if((u=u-d-1)>I)m.c=m.e=null;else if(us){if(--e>0)for(l+=".";e--;l+="0");}else if((e+=a-s)>0)for(a+1==s&&(l+=".");e--;l+="0");return t.s<0&&r?"-"+l:l}function V(t,e){var n,i,r=0;for(_(t[0])&&(t=t[0]),n=new j(t[0]);++r=10;r/=10,i++);return(n=i+14*n-1)>I?t.c=t.e=null:n=10;u/=10,r++);if((a=e-r)<0)a+=14,p=(c=m[f=0])/g[r-(o=e)-1]%10|0;else if((f=s((a+1)/14))>=m.length){if(!i)break t;for(;m.length<=f;m.push(0));c=p=0,r=1,o=(a%=14)-14+1}else{for(c=u=m[f],r=1;u>=10;u/=10,r++);p=(o=(a%=14)-14+r)<0?0:c/g[r-o-1]%10|0}if(i=i||e<0||null!=m[f+1]||(o<0?c:c%g[r-o-1]),i=n<4?(p||i)&&(0==n||n==(t.s<0?3:2)):p>5||5==p&&(4==n||i||6==n&&(a>0?o>0?c/g[r-o]:0:m[f-1])%10&1||n==(t.s<0?8:7)),e<1||!m[0])return m.length=0,i?(m[0]=g[(14-(e-=t.e+1)%14)%14],t.e=-e||0):m[0]=t.e=0,t;if(0==a?(m.length=f,u=1,f--):(m.length=f+1,u=g[14-a],m[f]=o>0?l(c/g[r-o]%g[o])*u:0),i)for(;;){if(0==f){for(a=1,o=m[0];o>=10;o/=10,a++);for(o=m[0]+=u,u=1;o>=10;o/=10,u++);a!=u&&(t.e++,m[0]==d&&(m[0]=1));break}if(m[f]+=u,m[f]!=d)break;m[f--]=0,u=1}for(a=m.length;0===m[--a];m.pop());}t.e>I?t.c=t.e=null:t.e>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),e[c]=n[0],e[c+1]=n[1]):(d.push(o%1e14),c+=2);c=r/2}else{if(!crypto.randomBytes)throw Y=!1,Error(u+"crypto unavailable");for(e=crypto.randomBytes(r*=7);c=9e15?crypto.randomBytes(7).copy(e,c):(d.push(o%1e14),c+=7);c=r/7}if(!Y)for(;c=10;o/=10,c++);c<14&&(i-=14-c)}return p.e=i,p.c=d,p}),i=function(){function t(t,e,n,i){for(var r,a,o=[0],s=0,l=t.length;sn-1&&(null==o[r+1]&&(o[r+1]=0),o[r+1]+=o[r]/n|0,o[r]%=n)}return o.reverse()}return function(e,i,r,a,o){var s,l,u,c,d,h,f,p,g=e.indexOf("."),v=T,_=E;for(g>=0&&(c=R,R=0,e=e.replace(".",""),h=(p=new j(i)).pow(e.length-g),R=c,p.c=t(k(m(h.c),h.e,"0"),10,r,"0123456789"),p.e=p.c.length),u=c=(f=t(e,i,r,o?(s=H,"0123456789"):(s="0123456789",H))).length;0==f[--c];f.pop());if(!f[0])return s.charAt(0);if(g<0?--u:(h.c=f,h.e=u,h.s=a,f=(h=n(h,p,v,_,r)).c,d=h.r,u=h.e),g=f[l=u+v+1],c=r/2,d=d||l<0||null!=f[l+1],d=_<4?(null!=g||d)&&(0==_||_==(h.s<0?3:2)):g>c||g==c&&(4==_||d||6==_&&1&f[l-1]||_==(h.s<0?8:7)),l<1||!f[0])e=d?k(s.charAt(1),-v,s.charAt(0)):s.charAt(0);else{if(f.length=l,d)for(--r;++f[--l]>r;)f[l]=0,l||(++u,f=[1].concat(f));for(c=f.length;!f[--c];);for(g=0,e="";g<=c;e+=s.charAt(f[g++]));e=k(e,u,s.charAt(0))}return e}}(),n=function(){function t(t,e,n){var i,r,a,o,s=0,l=t.length,u=e%1e7,c=e/1e7|0;for(t=t.slice();l--;)s=((r=u*(a=t[l]%1e7)+(i=c*a+(o=t[l]/1e7|0)*u)%1e7*1e7+s)/n|0)+(i/1e7|0)+c*o,t[l]=r%n;return s&&(t=[s].concat(t)),t}function e(t,e,n,i){var r,a;if(n!=i)a=n>i?1:-1;else for(r=a=0;re[r]?1:-1;break}return a}function n(t,e,n,i){for(var r=0;n--;)t[n]-=r,t[n]=(r=t[n]1;t.splice(0,1));}return function(i,r,a,o,s){var u,c,h,f,m,g,v,_,y,b,k,w,M,S,x,C,D,L=i.s==r.s?1:-1,T=i.c,E=r.c;if(!(T&&T[0]&&E&&E[0]))return new j(i.s&&r.s&&(T?!E||T[0]!=E[0]:E)?T&&0==T[0]||!E?0*L:L/0:NaN);for(y=(_=new j(L)).c=[],L=a+(c=i.e-r.e)+1,s||(s=d,c=p(i.e/14)-p(r.e/14),L=L/14|0),h=0;E[h]==(T[h]||0);h++);if(E[h]>(T[h]||0)&&c--,L<0)y.push(1),f=!0;else{for(S=T.length,C=E.length,h=0,L+=2,(m=l(s/(E[0]+1)))>1&&(E=t(E,m,s),T=t(T,m,s),C=E.length,S=T.length),M=C,k=(b=T.slice(0,C)).length;k=s/2&&x++;do{if(m=0,(u=e(E,b,C,k))<0){if(w=b[0],C!=k&&(w=w*s+(b[1]||0)),(m=l(w/x))>1)for(m>=s&&(m=s-1),v=(g=t(E,m,s)).length,k=b.length;1==e(g,b,v,k);)m--,n(g,C=10;L/=10,h++);W(_,a+(_.e=h+14*c-1)+1,o,f)}else _.e=c,_.r=+f;return _}}(),w=/^(-?)0([xbo])(?=\w[\w.]*$)/i,M=/^([^.]+)\.$/,S=/^\.([^.]+)$/,x=/^-?(Infinity|NaN)$/,C=/^\s*\+(?=[\w.])|^\s+|\s+$/g,r=function(t,e,n,i){var r,a=n?e:e.replace(C,"");if(x.test(a))t.s=isNaN(a)?null:a<0?-1:1,t.c=t.e=null;else{if(!n&&(a=a.replace(w,(function(t,e,n){return r="x"==(n=n.toLowerCase())?16:"b"==n?2:8,i&&i!=r?t:e})),i&&(r=i,a=a.replace(M,"$1").replace(S,"0.$1")),e!=a))return new j(a,r);if(j.DEBUG)throw Error(u+"Not a"+(i?" base "+i:"")+" number: "+e);t.c=t.e=t.s=null}},D.absoluteValue=D.abs=function(){var t=new j(this);return t.s<0&&(t.s=1),t},D.comparedTo=function(t,e){return g(this,new j(t,e))},D.decimalPlaces=D.dp=function(t,e){var n,i,r,a=this;if(null!=t)return v(t,0,f),null==e?e=E:v(e,0,8),W(new j(a),t+a.e+1,e);if(!(n=a.c))return null;if(i=14*((r=n.length-1)-p(this.e/14)),r=n[r])for(;r%10==0;r/=10,i--);return i<0&&(i=0),i},D.dividedBy=D.div=function(t,e){return n(this,new j(t,e),T,E)},D.dividedToIntegerBy=D.idiv=function(t,e){return n(this,new j(t,e),0,1)},D.exponentiatedBy=D.pow=function(t,e){var n,i,r,a,o,c,d,h=this;if((t=new j(t)).c&&!t.isInteger())throw Error(u+"Exponent not an integer: "+t);if(null!=e&&(e=new j(e)),a=t.e>14,!h.c||!h.c[0]||1==h.c[0]&&!h.e&&1==h.c.length||!t.c||!t.c[0])return d=new j(Math.pow(+h.valueOf(),a?2-y(t):+t)),e?d.mod(e):d;if(o=t.s<0,e){if(e.c?!e.c[0]:!e.s)return new j(NaN);(i=!o&&h.isInteger()&&e.isInteger())&&(h=h.mod(e))}else{if(t.e>9&&(h.e>0||h.e<-1||(0==h.e?h.c[0]>1||a&&h.c[1]>=24e7:h.c[0]<8e13||a&&h.c[0]<=9999975e7)))return r=h.s<0&&y(t)?-0:0,h.e>-1&&(r=1/r),new j(o?1/r:r);R&&(r=s(R/14+2))}for(a?(n=new j(.5),c=y(t)):c=t%2,o&&(t.s=1),d=new j(L);;){if(c){if(!(d=d.times(h)).c)break;r?d.c.length>r&&(d.c.length=r):i&&(d=d.mod(e))}if(a){if(W(t=t.times(n),t.e+1,1),!t.c[0])break;a=t.e>14,c=y(t)}else{if(!(t=l(t/2)))break;c=t%2}h=h.times(h),r?h.c&&h.c.length>r&&(h.c.length=r):i&&(h=h.mod(e))}return i?d:(o&&(d=L.div(d)),e?d.mod(e):r?W(d,R,E,void 0):d)},D.integerValue=function(t){var e=new j(this);return null==t?t=E:v(t,0,8),W(e,e.e+1,t)},D.isEqualTo=D.eq=function(t,e){return 0===g(this,new j(t,e))},D.isFinite=function(){return!!this.c},D.isGreaterThan=D.gt=function(t,e){return g(this,new j(t,e))>0},D.isGreaterThanOrEqualTo=D.gte=function(t,e){return 1===(e=g(this,new j(t,e)))||0===e},D.isInteger=function(){return!!this.c&&p(this.e/14)>this.c.length-2},D.isLessThan=D.lt=function(t,e){return g(this,new j(t,e))<0},D.isLessThanOrEqualTo=D.lte=function(t,e){return-1===(e=g(this,new j(t,e)))||0===e},D.isNaN=function(){return!this.s},D.isNegative=function(){return this.s<0},D.isPositive=function(){return this.s>0},D.isZero=function(){return!!this.c&&0==this.c[0]},D.minus=function(t,e){var n,i,r,a,o=this,s=o.s;if(e=(t=new j(t,e)).s,!s||!e)return new j(NaN);if(s!=e)return t.s=-e,o.plus(t);var l=o.e/14,u=t.e/14,c=o.c,h=t.c;if(!l||!u){if(!c||!h)return c?(t.s=-e,t):new j(h?o:NaN);if(!c[0]||!h[0])return h[0]?(t.s=-e,t):new j(c[0]?o:3==E?-0:0)}if(l=p(l),u=p(u),c=c.slice(),s=l-u){for((a=s<0)?(s=-s,r=c):(u=l,r=h),r.reverse(),e=s;e--;r.push(0));r.reverse()}else for(i=(a=(s=c.length)<(e=h.length))?s:e,s=e=0;e0)for(;e--;c[n++]=0);for(e=d-1;i>s;){if(c[--i]=0;){for(n=0,f=b[r]%1e7,m=b[r]/1e7|0,a=r+(o=l);a>r;)n=((u=f*(u=y[--o]%1e7)+(s=m*u+(c=y[o]/1e7|0)*f)%1e7*1e7+g[a]+n)/v|0)+(s/1e7|0)+m*c,g[a--]=u%v;g[a]=n}return n?++i:g.splice(0,1),z(t,g,i)},D.negated=function(){var t=new j(this);return t.s=-t.s||null,t},D.plus=function(t,e){var n,i=this,r=i.s;if(e=(t=new j(t,e)).s,!r||!e)return new j(NaN);if(r!=e)return t.s=-e,i.minus(t);var a=i.e/14,o=t.e/14,s=i.c,l=t.c;if(!a||!o){if(!s||!l)return new j(r/0);if(!s[0]||!l[0])return l[0]?t:new j(s[0]?i:0*r)}if(a=p(a),o=p(o),s=s.slice(),r=a-o){for(r>0?(o=a,n=l):(r=-r,n=s),n.reverse();r--;n.push(0));n.reverse()}for((r=s.length)-(e=l.length)<0&&(n=l,l=s,s=n,e=r),r=0;e;)r=(s[--e]=s[e]+l[e]+r)/d|0,s[e]=d===s[e]?0:s[e]%d;return r&&(s=[r].concat(s),++o),z(t,s,o)},D.precision=D.sd=function(t,e){var n,i,r,a=this;if(null!=t&&t!==!!t)return v(t,1,f),null==e?e=E:v(e,0,8),W(new j(a),t,e);if(!(n=a.c))return null;if(i=14*(r=n.length-1)+1,r=n[r]){for(;r%10==0;r/=10,i--);for(r=n[0];r>=10;r/=10,i++);}return t&&a.e+1>i&&(i=a.e+1),i},D.shiftedBy=function(t){return v(t,-9007199254740991,9007199254740991),this.times("1e"+t)},D.squareRoot=D.sqrt=function(){var t,e,i,r,a,o=this,s=o.c,l=o.s,u=o.e,c=T+4,d=new j("0.5");if(1!==l||!s||!s[0])return new j(!l||l<0&&(!s||s[0])?NaN:s?o:1/0);if(0==(l=Math.sqrt(+o))||l==1/0?(((e=m(s)).length+u)%2==0&&(e+="0"),l=Math.sqrt(e),u=p((u+1)/2)-(u<0||u%2),i=new j(e=l==1/0?"1e"+u:(e=l.toExponential()).slice(0,e.indexOf("e")+1)+u)):i=new j(l+""),i.c[0])for((l=(u=i.e)+c)<3&&(l=0);;)if(i=d.times((a=i).plus(n(o,a,c,1))),m(a.c).slice(0,l)===(e=m(i.c)).slice(0,l)){if(i.e0&&h>0){for(l=d.substr(0,i=h%a||a);i0&&(l+=s+d.slice(i)),c&&(l="-"+l)}n=u?l+N.decimalSeparator+((o=+N.fractionGroupSize)?u.replace(new RegExp("\\d{"+o+"}\\B","g"),"$&"+N.fractionGroupSeparator):u):l}return n},D.toFraction=function(t){var e,i,r,a,o,s,l,c,d,f,p,g,v=this,_=v.c;if(null!=t&&(!(c=new j(t)).isInteger()&&(c.c||1!==c.s)||c.lt(L)))throw Error(u+"Argument "+(c.isInteger()?"out of range: ":"not an integer: ")+t);if(!_)return v.toString();for(i=new j(L),f=r=new j(L),a=d=new j(L),g=m(_),s=i.e=g.length-v.e-1,i.c[0]=h[(l=s%14)<0?14+l:l],t=!t||c.comparedTo(i)>0?s>0?i:f:c,l=I,I=1/0,c=new j(g),d.c[0]=0;p=n(c,i,0,1),1!=(o=r.plus(p.times(a))).comparedTo(t);)r=a,a=o,f=d.plus(p.times(o=f)),d=o,i=c.minus(p.times(o=i)),c=o;return o=n(t.minus(r),a,0,1),d=d.plus(o.times(f)),r=r.plus(o.times(a)),d.s=f.s=v.s,e=n(f,a,s*=2,E).minus(v).abs().comparedTo(n(d,r,s,E).minus(v).abs())<1?[f.toString(),a.toString()]:[d.toString(),r.toString()],I=l,e},D.toNumber=function(){return+this},D.toPrecision=function(t,e){return null!=t&&v(t,1,f),B(this,t,e,2)},D.toString=function(t){var e,n=this,r=n.s,a=n.e;return null===a?r?(e="Infinity",r<0&&(e="-"+e)):e="NaN":(e=m(n.c),null==t?e=a<=P||a>=O?b(e,a):k(e,a,"0"):(v(t,2,H.length,"Base"),e=i(k(e,a,"0"),10,t,r,!0)),r<0&&n.c[0]&&(e="-"+e)),e},D.valueOf=D.toJSON=function(){var t,e=this,n=e.e;return null===n?e.toString():(t=m(e.c),t=n<=P||n>=O?b(t,n):k(t,n,"0"),e.s<0?"-"+t:t)},D._isBigNumber=!0,null!=e&&j.set(e),j}()).default=a.BigNumber=a,void 0===(i=(function(){return a}).call(e,n,e,t))||(t.exports=i)}()},kEOa:function(t,e,n){!function(t){"use strict";var e={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},n={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};t.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2_\u0986\u0997_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(t){return t.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,(function(t){return n[t]}))},postformat:function(t){return t.replace(/\d/g,(function(t){return e[t]}))},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u09b0\u09be\u09a4"===e&&t>=4||"\u09a6\u09c1\u09aa\u09c1\u09b0"===e&&t<5||"\u09ac\u09bf\u0995\u09be\u09b2"===e?t+12:t},meridiem:function(t,e,n){return t<4?"\u09b0\u09be\u09a4":t<10?"\u09b8\u0995\u09be\u09b2":t<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":t<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}})}(n("wd/R"))},kOpN:function(t,e,n){!function(t){"use strict";t.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(t,e){return 12===t&&(t=0),"\u51cc\u6668"===e||"\u65e9\u4e0a"===e||"\u4e0a\u5348"===e?t:"\u4e2d\u5348"===e?t>=11?t:t+12:"\u4e0b\u5348"===e||"\u665a\u4e0a"===e?t+12:void 0},meridiem:function(t,e,n){var i=100*t+e;return i<600?"\u51cc\u6668":i<900?"\u65e9\u4e0a":i<1130?"\u4e0a\u5348":i<1230?"\u4e2d\u5348":i<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+"\u65e5";case"M":return t+"\u6708";case"w":case"W":return t+"\u9031";default:return t}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}})}(n("wd/R"))},l5ep:function(t,e,n){!function(t){"use strict";t.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(t){var e="";return t>20?e=40===t||50===t||60===t||80===t||100===t?"fed":"ain":t>0&&(e=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][t]),t+e},week:{dow:1,doy:4}})}(n("wd/R"))},lXzo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var i,r;return"m"===n?e?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":t+" "+(i=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[n].split("_"),i%10==1&&i%100!=11?r[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?r[1]:r[2])}var n=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];t.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?\] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:n,longMonthsParse:n,shortMonthsParse:n,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(t){if(t.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:e,m:e,mm:e,h:"\u0447\u0430\u0441",hh:e,d:"\u0434\u0435\u043d\u044c",dd:e,M:"\u043c\u0435\u0441\u044f\u0446",MM:e,y:"\u0433\u043e\u0434",yy:e},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u0438":t<12?"\u0443\u0442\u0440\u0430":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":return t+"-\u0439";case"D":return t+"-\u0433\u043e";case"w":case"W":return t+"-\u044f";default:return t}},week:{dow:1,doy:4}})}(n("wd/R"))},lYtQ:function(t,e,n){!function(t){"use strict";function e(t,e,n,i){switch(n){case"s":return e?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return t+(e?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return t+(e?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return t+(e?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return t+(e?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return t+(e?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return t+(e?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return t}}t.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(t){return"\u04ae\u0425"===t},meridiem:function(t,e,n){return t<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(t,e){switch(e){case"d":case"D":case"DDD":return t+" \u04e9\u0434\u04e9\u0440";default:return t}}})}(n("wd/R"))},lgnt:function(t,e,n){!function(t){"use strict";var e={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};t.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u0435 \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(t){return t+(e[t]||e[t%10]||e[t>=100?100:null])},week:{dow:1,doy:7}})}(n("wd/R"))},lyxo:function(t,e,n){!function(t){"use strict";function e(t,e,n){var i=" ";return(t%100>=20||t>=100&&t%100==0)&&(i=" de "),t+i+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[n]}t.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:e,m:"un minut",mm:e,h:"o or\u0103",hh:e,d:"o zi",dd:e,M:"o lun\u0103",MM:e,y:"un an",yy:e},week:{dow:1,doy:7}})}(n("wd/R"))},mgIt:function(t,e,n){var i=n("T016");function r(t){if(t){var e=[0,0,0],n=1,r=t.match(/^#([a-fA-F0-9]{3})$/i);if(r){r=r[1];for(var a=0;a0&&(u=t.getDatasetMeta(u[0]._datasetIndex).data),u},"x-axis":function(t,e){return u(t,e,{intersect:!1})},point:function(t,e){return o(t,r(e,t))},nearest:function(t,e,n){var i=r(e,t);n.axis=n.axis||"xy";var a=l(n.axis),o=s(t,i,n.intersect,a);return o.length>1&&o.sort((function(t,e){var n=t.getArea()-e.getArea();return 0===n&&(n=t._datasetIndex-e._datasetIndex),n})),o.slice(0,1)},x:function(t,e,n){var i=r(e,t),o=[],s=!1;return a(t,(function(t){t.inXRange(i.x)&&o.push(t),t.inRange(i.x,i.y)&&(s=!0)})),n.intersect&&!s&&(o=[]),o},y:function(t,e,n){var i=r(e,t),o=[],s=!1;return a(t,(function(t){t.inYRange(i.y)&&o.push(t),t.inRange(i.x,i.y)&&(s=!0)})),n.intersect&&!s&&(o=[]),o}}}},nDWh:function(t,e,n){"use strict";var i=n("6ww4"),r=n("CDJp"),a=n("RDha");t.exports=function(t){function e(t,e,n){var i;return"string"==typeof t?(i=parseInt(t,10),-1!==t.indexOf("%")&&(i=i/100*e.parentNode[n])):i=t,i}function n(t){return null!=t&&"none"!==t}function o(t,i,r){var a=document.defaultView,o=t.parentNode,s=a.getComputedStyle(t)[i],l=a.getComputedStyle(o)[i],u=n(s),c=n(l),d=Number.POSITIVE_INFINITY;return u||c?Math.min(u?e(s,t,r):d,c?e(l,o,r):d):"none"}a.configMerge=function(){return a.merge(a.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,r){var o=n[e]||{},s=i[e];"scales"===e?n[e]=a.scaleMerge(o,s):"scale"===e?n[e]=a.merge(o,[t.scaleService.getScaleDefaults(s.type),s]):a._merger(e,n,i,r)}})},a.scaleMerge=function(){return a.merge(a.clone(arguments[0]),[].slice.call(arguments,1),{merger:function(e,n,i,r){if("xAxes"===e||"yAxes"===e){var o,s,l,u=i[e].length;for(n[e]||(n[e]=[]),o=0;o=n[e].length&&n[e].push({}),a.merge(n[e][o],!n[e][o].type||l.type&&l.type!==n[e][o].type?[t.scaleService.getScaleDefaults(s),l]:l)}else a._merger(e,n,i,r)}})},a.where=function(t,e){if(a.isArray(t)&&Array.prototype.filter)return t.filter(e);var n=[];return a.each(t,(function(t){e(t)&&n.push(t)})),n},a.findIndex=Array.prototype.findIndex?function(t,e,n){return t.findIndex(e,n)}:function(t,e,n){n=void 0===n?t:n;for(var i=0,r=t.length;i=0;i--){var r=t[i];if(e(r))return r}},a.isNumber=function(t){return!isNaN(parseFloat(t))&&isFinite(t)},a.almostEquals=function(t,e,n){return Math.abs(t-e)t},a.max=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.max(t,e)}),Number.NEGATIVE_INFINITY)},a.min=function(t){return t.reduce((function(t,e){return isNaN(e)?t:Math.min(t,e)}),Number.POSITIVE_INFINITY)},a.sign=Math.sign?function(t){return Math.sign(t)}:function(t){return 0==(t=+t)||isNaN(t)?t:t>0?1:-1},a.log10=Math.log10?function(t){return Math.log10(t)}:function(t){var e=Math.log(t)*Math.LOG10E,n=Math.round(e);return t===Math.pow(10,n)?n:e},a.toRadians=function(t){return t*(Math.PI/180)},a.toDegrees=function(t){return t*(180/Math.PI)},a.getAngleFromPoint=function(t,e){var n=e.x-t.x,i=e.y-t.y,r=Math.sqrt(n*n+i*i),a=Math.atan2(i,n);return a<-.5*Math.PI&&(a+=2*Math.PI),{angle:a,distance:r}},a.distanceBetweenPoints=function(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))},a.aliasPixel=function(t){return t%2==0?0:.5},a.splineCurve=function(t,e,n,i){var r=t.skip?e:t,a=e,o=n.skip?e:n,s=Math.sqrt(Math.pow(a.x-r.x,2)+Math.pow(a.y-r.y,2)),l=Math.sqrt(Math.pow(o.x-a.x,2)+Math.pow(o.y-a.y,2)),u=s/(s+l),c=l/(s+l),d=i*(u=isNaN(u)?0:u),h=i*(c=isNaN(c)?0:c);return{previous:{x:a.x-d*(o.x-r.x),y:a.y-d*(o.y-r.y)},next:{x:a.x+h*(o.x-r.x),y:a.y+h*(o.y-r.y)}}},a.EPSILON=Number.EPSILON||1e-14,a.splineCurveMonotone=function(t){var e,n,i,r,o,s,l,u,c,d=(t||[]).map((function(t){return{model:t._model,deltaK:0,mK:0}})),h=d.length;for(e=0;e0?d[e-1]:null,(r=e0?d[e-1]:null)&&!n.model.skip&&(i.model.controlPointPreviousX=i.model.x-(c=(i.model.x-n.model.x)/3),i.model.controlPointPreviousY=i.model.y-c*i.mK),r&&!r.model.skip&&(i.model.controlPointNextX=i.model.x+(c=(r.model.x-i.model.x)/3),i.model.controlPointNextY=i.model.y+c*i.mK))},a.nextItem=function(t,e,n){return n?e>=t.length-1?t[0]:t[e+1]:e>=t.length-1?t[t.length-1]:t[e+1]},a.previousItem=function(t,e,n){return n?e<=0?t[t.length-1]:t[e-1]:e<=0?t[0]:t[e-1]},a.niceNum=function(t,e){var n=Math.floor(a.log10(t)),i=t/Math.pow(10,n);return(e?i<1.5?1:i<3?2:i<7?5:10:i<=1?1:i<=2?2:i<=5?5:10)*Math.pow(10,n)},a.requestAnimFrame="undefined"==typeof window?function(t){t()}:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(t){return window.setTimeout(t,1e3/60)},a.getRelativePosition=function(t,e){var n,i,r=t.originalEvent||t,o=t.currentTarget||t.srcElement,s=o.getBoundingClientRect(),l=r.touches;l&&l.length>0?(n=l[0].clientX,i=l[0].clientY):(n=r.clientX,i=r.clientY);var u=parseFloat(a.getStyle(o,"padding-left")),c=parseFloat(a.getStyle(o,"padding-top")),d=parseFloat(a.getStyle(o,"padding-right")),h=parseFloat(a.getStyle(o,"padding-bottom")),f=s.bottom-s.top-c-h;return{x:n=Math.round((n-s.left-u)/(s.right-s.left-u-d)*o.width/e.currentDevicePixelRatio),y:i=Math.round((i-s.top-c)/f*o.height/e.currentDevicePixelRatio)}},a.getConstraintWidth=function(t){return o(t,"max-width","clientWidth")},a.getConstraintHeight=function(t){return o(t,"max-height","clientHeight")},a.getMaximumWidth=function(t){var e=t.parentNode;if(!e)return t.clientWidth;var n=parseInt(a.getStyle(e,"padding-left"),10),i=parseInt(a.getStyle(e,"padding-right"),10),r=e.clientWidth-n-i,o=a.getConstraintWidth(t);return isNaN(o)?r:Math.min(r,o)},a.getMaximumHeight=function(t){var e=t.parentNode;if(!e)return t.clientHeight;var n=parseInt(a.getStyle(e,"padding-top"),10),i=parseInt(a.getStyle(e,"padding-bottom"),10),r=e.clientHeight-n-i,o=a.getConstraintHeight(t);return isNaN(o)?r:Math.min(r,o)},a.getStyle=function(t,e){return t.currentStyle?t.currentStyle[e]:document.defaultView.getComputedStyle(t,null).getPropertyValue(e)},a.retinaScale=function(t,e){var n=t.currentDevicePixelRatio=e||window.devicePixelRatio||1;if(1!==n){var i=t.canvas,r=t.height,a=t.width;i.height=r*n,i.width=a*n,t.ctx.scale(n,n),i.style.height||i.style.width||(i.style.height=r+"px",i.style.width=a+"px")}},a.fontString=function(t,e,n){return e+" "+t+"px "+n},a.longestText=function(t,e,n,i){var r=(i=i||{}).data=i.data||{},o=i.garbageCollect=i.garbageCollect||[];i.font!==e&&(r=i.data={},o=i.garbageCollect=[],i.font=e),t.font=e;var s=0;a.each(n,(function(e){null!=e&&!0!==a.isArray(e)?s=a.measureText(t,r,o,s,e):a.isArray(e)&&a.each(e,(function(e){null==e||a.isArray(e)||(s=a.measureText(t,r,o,s,e))}))}));var l=o.length/2;if(l>n.length){for(var u=0;ui&&(i=a),i},a.numberOfLabelLines=function(t){var e=1;return a.each(t,(function(t){a.isArray(t)&&t.length>e&&(e=t.length)})),e},a.color=i?function(t){return t instanceof CanvasGradient&&(t=r.global.defaultColor),i(t)}:function(t){return console.error("Color.js not found!"),t},a.getHoverColor=function(t){return t instanceof CanvasPattern?t:a.color(t).saturate(.5).darken(.1).rgbString()}}},nyYc:function(t,e,n){!function(t){"use strict";t.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(t,e){switch(e){case"D":return t+(1===t?"er":"");default:case"M":case"Q":case"DDD":case"d":return t+(1===t?"er":"e");case"w":case"W":return t+(1===t?"re":"e")}},week:{dow:1,doy:4}})}(n("wd/R"))},o1bE:function(t,e,n){!function(t){"use strict";t.defineLocale("ar-dz",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:4}})}(n("wd/R"))},"p/rL":function(t,e,n){!function(t){"use strict";t.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}})}(n("wd/R"))},paOr:function(t,e,n){"use strict";var i=n("RDha");t.exports=function(t){var e=i.noop;t.LinearScaleBase=t.Scale.extend({getRightValue:function(e){return"string"==typeof e?+e:t.Scale.prototype.getRightValue.call(this,e)},handleTickRangeOptions:function(){var t=this,e=t.options.ticks;if(e.beginAtZero){var n=i.sign(t.min),r=i.sign(t.max);n<0&&r<0?t.max=0:n>0&&r>0&&(t.min=0)}var a=void 0!==e.min||void 0!==e.suggestedMin,o=void 0!==e.max||void 0!==e.suggestedMax;void 0!==e.min?t.min=e.min:void 0!==e.suggestedMin&&(t.min=null===t.min?e.suggestedMin:Math.min(t.min,e.suggestedMin)),void 0!==e.max?t.max=e.max:void 0!==e.suggestedMax&&(t.max=null===t.max?e.suggestedMax:Math.max(t.max,e.suggestedMax)),a!==o&&t.min>=t.max&&(a?t.max=t.min+1:t.min=t.max-1),t.min===t.max&&(t.max++,e.beginAtZero||t.min--)},getTickLimit:e,handleDirectionalChanges:e,buildTicks:function(){var t=this,e=t.options.ticks,n=t.getTickLimit(),r={maxTicks:n=Math.max(2,n),min:e.min,max:e.max,stepSize:i.valueOrDefault(e.fixedStepSize,e.stepSize)},a=t.ticks=function(t,e){var n,r=[];if(t.stepSize&&t.stepSize>0)n=t.stepSize;else{var a=i.niceNum(e.max-e.min,!1);n=i.niceNum(a/(t.maxTicks-1),!0)}var o=Math.floor(e.min/n)*n,s=Math.ceil(e.max/n)*n;t.min&&t.max&&t.stepSize&&i.almostWhole((t.max-t.min)/t.stepSize,n/1e3)&&(o=t.min,s=t.max);var l=(s-o)/n;l=i.almostEquals(l,Math.round(l),n/1e3)?Math.round(l):Math.ceil(l);var u=1;n<1&&(u=Math.pow(10,n.toString().length-2),o=Math.round(o*u)/u,s=Math.round(s*u)/u),r.push(void 0!==t.min?t.min:o);for(var c=1;c
      ';var r=e.childNodes[0],a=e.childNodes[1];e._reset=function(){r.scrollLeft=1e6,r.scrollTop=1e6,a.scrollLeft=1e6,a.scrollTop=1e6};var o=function(){e._reset(),t()};return l(r,"scroll",o.bind(r,"expand")),l(a,"scroll",o.bind(a,"shrink")),e}((a=function(){if(d.resizer)return e(c("resize",n))},s=!1,u=[],function(){u=Array.prototype.slice.call(arguments),o=o||this,s||(s=!0,i.requestAnimFrame.call(window,(function(){s=!1,a.apply(o,u)})))}));!function(t,e){var n=t.$chartjs||(t.$chartjs={}),a=n.renderProxy=function(t){"chartjs-render-animation"===t.animationName&&e()};i.each(r,(function(e){l(t,e,a)})),n.reflow=!!t.offsetParent,t.classList.add("chartjs-render-monitor")}(t,(function(){if(d.resizer){var e=t.parentNode;e&&e!==h.parentNode&&e.insertBefore(h,e.firstChild),h._reset()}}))}(o,n,t)},removeEventListener:function(t,e,n){var a,o,s,l=t.canvas;if("resize"!==e){var c=((n.$chartjs||{}).proxies||{})[t.id+"_"+e];c&&u(l,e,c)}else s=(o=(a=l).$chartjs||{}).resizer,delete o.resizer,function(t){var e=t.$chartjs||{},n=e.renderProxy;n&&(i.each(r,(function(e){u(t,e,n)})),delete e.renderProxy),t.classList.remove("chartjs-render-monitor")}(a),s&&s.parentNode&&s.parentNode.removeChild(s)}},i.addEvent=l,i.removeEvent=u},qzaf:function(t,e,n){"use strict";t.exports=function(t){t.PolarArea=function(e,n){return n.type="polarArea",new t(e,n)}}},raLr:function(t,e,n){!function(t){"use strict";function e(t,e,n){var i,r;return"m"===n?e?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===n?e?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":t+" "+(i=+t,r={ss:e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:e?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:e?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[n].split("_"),i%10==1&&i%100!=11?r[0]:i%10>=2&&i%10<=4&&(i%100<10||i%100>=20)?r[1]:r[2])}function n(t){return function(){return t+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}t.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(t,e){var n={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return t?n[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(e)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(e)?"genitive":"nominative"][t.day()]:n.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:n("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:n("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:n("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:n("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return n("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return n("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:e,m:e,mm:e,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:e,d:"\u0434\u0435\u043d\u044c",dd:e,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:e,y:"\u0440\u0456\u043a",yy:e},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(t){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(t)},meridiem:function(t,e,n){return t<4?"\u043d\u043e\u0447\u0456":t<12?"\u0440\u0430\u043d\u043a\u0443":t<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(t,e){switch(e){case"M":case"d":case"DDD":case"w":case"W":return t+"-\u0439";case"D":return t+"-\u0433\u043e";default:return t}},week:{dow:1,doy:7}})}(n("wd/R"))},"s+uk":function(t,e,n){!function(t){"use strict";function e(t,e,n,i){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},sp3z:function(t,e,n){!function(t){"use strict";t.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(t){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===t},meridiem:function(t,e,n){return t<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(t){return"\u0e97\u0eb5\u0ec8"+t}})}(n("wd/R"))},tGlX:function(t,e,n){!function(t){"use strict";function e(t,e,n,i){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},tT3J:function(t,e,n){!function(t){"use strict";t.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}})}(n("wd/R"))},tUCv:function(t,e,n){!function(t){"use strict";t.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(t,e){return 12===t&&(t=0),"enjing"===e?t:"siyang"===e?t>=11?t:t+12:"sonten"===e||"ndalu"===e?t+12:void 0},meridiem:function(t,e,n){return t<11?"enjing":t<15?"siyang":t<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}})}(n("wd/R"))},tjFV:function(t,e,n){"use strict";var i=n("CDJp"),r=n("RDha"),a=n("fELs");t.exports=function(t){t.scaleService={constructors:{},defaults:{},registerScaleType:function(t,e,n){this.constructors[t]=e,this.defaults[t]=r.clone(n)},getScaleConstructor:function(t){return this.constructors.hasOwnProperty(t)?this.constructors[t]:void 0},getScaleDefaults:function(t){return this.defaults.hasOwnProperty(t)?r.merge({},[i.scale,this.defaults[t]]):{}},updateScaleDefaults:function(t,e){this.defaults.hasOwnProperty(t)&&(this.defaults[t]=r.extend(this.defaults[t],e))},addScalesToLayout:function(t){r.each(t.scales,(function(e){e.fullWidth=e.options.fullWidth,e.position=e.options.position,e.weight=e.options.weight,a.addBox(t,e)}))}}}},u0Op:function(t,e,n){"use strict";var i=n("TC34"),r={linear:function(t){return t},easeInQuad:function(t){return t*t},easeOutQuad:function(t){return-t*(t-2)},easeInOutQuad:function(t){return(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1)},easeInCubic:function(t){return t*t*t},easeOutCubic:function(t){return(t-=1)*t*t+1},easeInOutCubic:function(t){return(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2)},easeInQuart:function(t){return t*t*t*t},easeOutQuart:function(t){return-((t-=1)*t*t*t-1)},easeInOutQuart:function(t){return(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)},easeInQuint:function(t){return t*t*t*t*t},easeOutQuint:function(t){return(t-=1)*t*t*t*t+1},easeInOutQuint:function(t){return(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)},easeInSine:function(t){return 1-Math.cos(t*(Math.PI/2))},easeOutSine:function(t){return Math.sin(t*(Math.PI/2))},easeInOutSine:function(t){return-.5*(Math.cos(Math.PI*t)-1)},easeInExpo:function(t){return 0===t?0:Math.pow(2,10*(t-1))},easeOutExpo:function(t){return 1===t?1:1-Math.pow(2,-10*t)},easeInOutExpo:function(t){return 0===t?0:1===t?1:(t/=.5)<1?.5*Math.pow(2,10*(t-1)):.5*(2-Math.pow(2,-10*--t))},easeInCirc:function(t){return t>=1?t:-(Math.sqrt(1-t*t)-1)},easeOutCirc:function(t){return Math.sqrt(1-(t-=1)*t)},easeInOutCirc:function(t){return(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)},easeInElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),-i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n))},easeOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:1===t?1:(n||(n=.3),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),i*Math.pow(2,-10*t)*Math.sin((t-e)*(2*Math.PI)/n)+1)},easeInOutElastic:function(t){var e=1.70158,n=0,i=1;return 0===t?0:2==(t/=.5)?1:(n||(n=.45),i<1?(i=1,e=n/4):e=n/(2*Math.PI)*Math.asin(1/i),t<1?i*Math.pow(2,10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*-.5:i*Math.pow(2,-10*(t-=1))*Math.sin((t-e)*(2*Math.PI)/n)*.5+1)},easeInBack:function(t){var e=1.70158;return t*t*((e+1)*t-e)},easeOutBack:function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1},easeInOutBack:function(t){var e=1.70158;return(t/=.5)<1?t*t*((1+(e*=1.525))*t-e)*.5:.5*((t-=2)*t*((1+(e*=1.525))*t+e)+2)},easeInBounce:function(t){return 1-r.easeOutBounce(1-t)},easeOutBounce:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:function(t){return t<.5?.5*r.easeInBounce(2*t):.5*r.easeOutBounce(2*t-1)+.5}};t.exports={effects:r},i.easingEffects=r},u3GI:function(t,e,n){!function(t){"use strict";function e(t,e,n,i){var r={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[t+" Tage",t+" Tagen"],M:["ein Monat","einem Monat"],MM:[t+" Monate",t+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[t+" Jahre",t+" Jahren"]};return e?r[n][0]:r[n][1]}t.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:e,mm:"%d Minuten",h:e,hh:"%d Stunden",d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uEye:function(t,e,n){!function(t){"use strict";t.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},uXwI:function(t,e,n){!function(t){"use strict";var e={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function n(t,e,n){return n?e%10==1&&e%100!=11?t[2]:t[3]:e%10==1&&e%100!=11?t[0]:t[1]}function i(t,i,r){return t+" "+n(e[r],t,i)}function r(t,i,r){return n(e[r],t,i)}t.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(t,e){return e?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:i,m:r,mm:i,h:r,hh:i,d:r,dd:i,M:r,MM:i,y:r,yy:i},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},vpM6:function(t,e,n){"use strict";var i=n("CDJp"),r=n("vvH+"),a=n("RDha");i._set("global",{plugins:{filler:{propagate:!0}}});var o={dataset:function(t){var e=t.fill,n=t.chart,i=n.getDatasetMeta(e),r=i&&n.isDatasetVisible(e)&&i.dataset._children||[],a=r.length||0;return a?function(t,e){return e=n)&&i;switch(a){case"bottom":return"start";case"top":return"end";case"zero":return"origin";case"origin":case"start":case"end":return a;default:return!1}}function l(t){var e,n=t.el._model||{},i=t.el._scale||{},r=t.fill,a=null;if(isFinite(r))return null;if("start"===r?a=void 0===n.scaleBottom?i.bottom:n.scaleBottom:"end"===r?a=void 0===n.scaleTop?i.top:n.scaleTop:void 0!==n.scaleZero?a=n.scaleZero:i.getBasePosition?a=i.getBasePosition():i.getBasePixel&&(a=i.getBasePixel()),null!=a){if(void 0!==a.x&&void 0!==a.y)return a;if("number"==typeof a&&isFinite(a))return{x:(e=i.isHorizontal())?a:null,y:e?null:a}}return null}function u(t,e,n){var i,r=t[e].fill,a=[e];if(!n)return r;for(;!1!==r&&-1===a.indexOf(r);){if(!isFinite(r))return r;if(!(i=t[r]))return!1;if(i.visible)return r;a.push(r),r=i.fill}return!1}function c(t){var e=t.fill,n="dataset";return!1===e?null:(isFinite(e)||(n="boundary"),o[n](t))}function d(t){return t&&!t.skip}function h(t,e,n,i,r){var o;if(i&&r){for(t.moveTo(e[0].x,e[0].y),o=1;o0;--o)a.canvas.lineTo(t,n[o],n[o-1],!0)}}t.exports={id:"filler",afterDatasetsUpdate:function(t,e){var n,i,a,o,d=(t.data.datasets||[]).length,h=e.propagate,f=[];for(i=0;i>>0,i=0;i0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,e-i.length)).toString().substr(1)+i}var j=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,B=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},z={};function W(t,e,n,i){var r=i;"string"==typeof i&&(r=function(){return this[i]()}),t&&(z[t]=r),e&&(z[e[0]]=function(){return H(r.apply(this,arguments),e[1],e[2])}),n&&(z[n]=function(){return this.localeData().ordinal(r.apply(this,arguments),t)})}function U(t,e){return t.isValid()?(e=q(e,t.localeData()),V[e]=V[e]||function(t){var e,n,i,r=t.match(j);for(e=0,n=r.length;e=0&&B.test(t);)t=t.replace(B,i),B.lastIndex=0,n-=1;return t}var G=/\d/,K=/\d\d/,J=/\d{3}/,Z=/\d{4}/,$=/[+-]?\d{6}/,Q=/\d\d?/,X=/\d\d\d\d?/,tt=/\d\d\d\d\d\d?/,et=/\d{1,3}/,nt=/\d{1,4}/,it=/[+-]?\d{1,6}/,rt=/\d+/,at=/[+-]?\d+/,ot=/Z|[+-]\d\d:?\d\d/gi,st=/Z|[+-]\d\d(?::?\d\d)?/gi,lt=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,ut={};function ct(t,e,n){ut[t]=E(e)?e:function(t,i){return t&&n?n:e}}function dt(t,e){return d(ut,t)?ut[t](e._strict,e._locale):new RegExp(ht(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,(function(t,e,n,i,r){return e||n||i||r}))))}function ht(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ft={};function pt(t,e){var n,i=e;for("string"==typeof t&&(t=[t]),l(e)&&(i=function(t,n){n[e]=M(t)}),n=0;n68?1900:2e3)};var yt,bt=kt("FullYear",!0);function kt(t,e){return function(n){return null!=n?(Mt(this,t,n),r.updateOffset(this,e),this):wt(this,t)}}function wt(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function Mt(t,e,n){t.isValid()&&!isNaN(n)&&("FullYear"===e&&_t(t.year())&&1===t.month()&&29===t.date()?t._d["set"+(t._isUTC?"UTC":"")+e](n,t.month(),St(n,t.month())):t._d["set"+(t._isUTC?"UTC":"")+e](n))}function St(t,e){if(isNaN(t)||isNaN(e))return NaN;var n=(e%12+12)%12;return t+=(e-n)/12,1===n?_t(t)?29:28:31-n%7%2}yt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){var e;for(e=0;e=0&&isFinite(s.getFullYear())&&s.setFullYear(t),s}function Yt(t){var e=new Date(Date.UTC.apply(null,arguments));return t<100&&t>=0&&isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t),e}function Ft(t,e,n){var i=7+e-n;return-(7+Yt(t,0,i).getUTCDay()-e)%7+i-1}function Rt(t,e,n,i,r){var a,o,s=1+7*(e-1)+(7+n-i)%7+Ft(t,i,r);return s<=0?o=vt(a=t-1)+s:s>vt(t)?(a=t+1,o=s-vt(t)):(a=t,o=s),{year:a,dayOfYear:o}}function Nt(t,e,n){var i,r,a=Ft(t.year(),e,n),o=Math.floor((t.dayOfYear()-a-1)/7)+1;return o<1?i=o+Ht(r=t.year()-1,e,n):o>Ht(t.year(),e,n)?(i=o-Ht(t.year(),e,n),r=t.year()+1):(r=t.year(),i=o),{week:i,year:r}}function Ht(t,e,n){var i=Ft(t,e,n),r=Ft(t+1,e,n);return(vt(t)-i+r)/7}W("w",["ww",2],"wo","week"),W("W",["WW",2],"Wo","isoWeek"),I("week","w"),I("isoWeek","W"),N("week",5),N("isoWeek",5),ct("w",Q),ct("ww",Q,K),ct("W",Q),ct("WW",Q,K),mt(["w","ww","W","WW"],(function(t,e,n,i){e[i.substr(0,1)]=M(t)})),W("d",0,"do","day"),W("dd",0,0,(function(t){return this.localeData().weekdaysMin(this,t)})),W("ddd",0,0,(function(t){return this.localeData().weekdaysShort(this,t)})),W("dddd",0,0,(function(t){return this.localeData().weekdays(this,t)})),W("e",0,0,"weekday"),W("E",0,0,"isoWeekday"),I("day","d"),I("weekday","e"),I("isoWeekday","E"),N("day",11),N("weekday",11),N("isoWeekday",11),ct("d",Q),ct("e",Q),ct("E",Q),ct("dd",(function(t,e){return e.weekdaysMinRegex(t)})),ct("ddd",(function(t,e){return e.weekdaysShortRegex(t)})),ct("dddd",(function(t,e){return e.weekdaysRegex(t)})),mt(["dd","ddd","dddd"],(function(t,e,n,i){var r=n._locale.weekdaysParse(t,i,n._strict);null!=r?e.d=r:p(n).invalidWeekday=t})),mt(["d","e","E"],(function(t,e,n,i){e[i]=M(t)}));var jt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Bt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Vt="Su_Mo_Tu_We_Th_Fr_Sa".split("_");function zt(t,e,n){var i,r,a,o=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],i=0;i<7;++i)a=f([2e3,1]).day(i),this._minWeekdaysParse[i]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[i]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[i]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===e?-1!==(r=yt.call(this._weekdaysParse,o))?r:null:"ddd"===e?-1!==(r=yt.call(this._shortWeekdaysParse,o))?r:null:-1!==(r=yt.call(this._minWeekdaysParse,o))?r:null:"dddd"===e?-1!==(r=yt.call(this._weekdaysParse,o))||-1!==(r=yt.call(this._shortWeekdaysParse,o))||-1!==(r=yt.call(this._minWeekdaysParse,o))?r:null:"ddd"===e?-1!==(r=yt.call(this._shortWeekdaysParse,o))||-1!==(r=yt.call(this._weekdaysParse,o))||-1!==(r=yt.call(this._minWeekdaysParse,o))?r:null:-1!==(r=yt.call(this._minWeekdaysParse,o))||-1!==(r=yt.call(this._weekdaysParse,o))||-1!==(r=yt.call(this._shortWeekdaysParse,o))?r:null}var Wt=lt,Ut=lt,qt=lt;function Gt(){function t(t,e){return e.length-t.length}var e,n,i,r,a,o=[],s=[],l=[],u=[];for(e=0;e<7;e++)n=f([2e3,1]).day(e),i=this.weekdaysMin(n,""),r=this.weekdaysShort(n,""),a=this.weekdays(n,""),o.push(i),s.push(r),l.push(a),u.push(i),u.push(r),u.push(a);for(o.sort(t),s.sort(t),l.sort(t),u.sort(t),e=0;e<7;e++)s[e]=ht(s[e]),l[e]=ht(l[e]),u[e]=ht(u[e]);this._weekdaysRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Kt(){return this.hours()%12||12}function Jt(t,e){W(t,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)}))}function Zt(t,e){return e._meridiemParse}W("H",["HH",2],0,"hour"),W("h",["hh",2],0,Kt),W("k",["kk",2],0,(function(){return this.hours()||24})),W("hmm",0,0,(function(){return""+Kt.apply(this)+H(this.minutes(),2)})),W("hmmss",0,0,(function(){return""+Kt.apply(this)+H(this.minutes(),2)+H(this.seconds(),2)})),W("Hmm",0,0,(function(){return""+this.hours()+H(this.minutes(),2)})),W("Hmmss",0,0,(function(){return""+this.hours()+H(this.minutes(),2)+H(this.seconds(),2)})),Jt("a",!0),Jt("A",!1),I("hour","h"),N("hour",13),ct("a",Zt),ct("A",Zt),ct("H",Q),ct("h",Q),ct("k",Q),ct("HH",Q,K),ct("hh",Q,K),ct("kk",Q,K),ct("hmm",X),ct("hmmss",tt),ct("Hmm",X),ct("Hmmss",tt),pt(["H","HH"],3),pt(["k","kk"],(function(t,e,n){var i=M(t);e[3]=24===i?0:i})),pt(["a","A"],(function(t,e,n){n._isPm=n._locale.isPM(t),n._meridiem=t})),pt(["h","hh"],(function(t,e,n){e[3]=M(t),p(n).bigHour=!0})),pt("hmm",(function(t,e,n){var i=t.length-2;e[3]=M(t.substr(0,i)),e[4]=M(t.substr(i)),p(n).bigHour=!0})),pt("hmmss",(function(t,e,n){var i=t.length-4,r=t.length-2;e[3]=M(t.substr(0,i)),e[4]=M(t.substr(i,2)),e[5]=M(t.substr(r)),p(n).bigHour=!0})),pt("Hmm",(function(t,e,n){var i=t.length-2;e[3]=M(t.substr(0,i)),e[4]=M(t.substr(i))})),pt("Hmmss",(function(t,e,n){var i=t.length-4,r=t.length-2;e[3]=M(t.substr(0,i)),e[4]=M(t.substr(i,2)),e[5]=M(t.substr(r))}));var $t,Qt=kt("Hours",!0),Xt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Ct,monthsShort:Dt,week:{dow:0,doy:6},weekdays:jt,weekdaysMin:Vt,weekdaysShort:Bt,meridiemParse:/[ap]\.?m?\.?/i},te={},ee={};function ne(t){return t?t.toLowerCase().replace("_","-"):t}function ie(e){var i=null;if(!te[e]&&void 0!==t&&t&&t.exports)try{i=$t._abbr,n("RnhZ")("./"+e),re(i)}catch(r){}return te[e]}function re(t,e){var n;return t&&((n=s(e)?oe(t):ae(t,e))?$t=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),$t._abbr}function ae(t,e){if(null!==e){var n,i=Xt;if(e.abbr=t,null!=te[t])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),i=te[t]._config;else if(null!=e.parentLocale)if(null!=te[e.parentLocale])i=te[e.parentLocale]._config;else{if(null==(n=ie(e.parentLocale)))return ee[e.parentLocale]||(ee[e.parentLocale]=[]),ee[e.parentLocale].push({name:t,config:e}),null;i=n._config}return te[t]=new O(P(i,e)),ee[t]&&ee[t].forEach((function(t){ae(t.name,t.config)})),re(t),te[t]}return delete te[t],null}function oe(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return $t;if(!a(t)){if(e=ie(t))return e;t=[t]}return function(t){for(var e,n,i,r,a=0;a0;){if(i=ie(r.slice(0,e).join("-")))return i;if(n&&n.length>=e&&S(r,n,!0)>=e-1)break;e--}a++}return $t}(t)}function se(t){var e,n=t._a;return n&&-2===p(t).overflow&&(e=n[1]<0||n[1]>11?1:n[2]<1||n[2]>St(n[0],n[1])?2:n[3]<0||n[3]>24||24===n[3]&&(0!==n[4]||0!==n[5]||0!==n[6])?3:n[4]<0||n[4]>59?4:n[5]<0||n[5]>59?5:n[6]<0||n[6]>999?6:-1,p(t)._overflowDayOfYear&&(e<0||e>2)&&(e=2),p(t)._overflowWeeks&&-1===e&&(e=7),p(t)._overflowWeekday&&-1===e&&(e=8),p(t).overflow=e),t}function le(t,e,n){return null!=t?t:null!=e?e:n}function ue(t){var e,n,i,a,o,s=[];if(!t._d){for(i=function(t){var e=new Date(r.now());return t._useUTC?[e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate()]:[e.getFullYear(),e.getMonth(),e.getDate()]}(t),t._w&&null==t._a[2]&&null==t._a[1]&&function(t){var e,n,i,r,a,o,s,l;if(null!=(e=t._w).GG||null!=e.W||null!=e.E)a=1,o=4,n=le(e.GG,t._a[0],Nt(Me(),1,4).year),i=le(e.W,1),((r=le(e.E,1))<1||r>7)&&(l=!0);else{a=t._locale._week.dow,o=t._locale._week.doy;var u=Nt(Me(),a,o);n=le(e.gg,t._a[0],u.year),i=le(e.w,u.week),null!=e.d?((r=e.d)<0||r>6)&&(l=!0):null!=e.e?(r=e.e+a,(e.e<0||e.e>6)&&(l=!0)):r=a}i<1||i>Ht(n,a,o)?p(t)._overflowWeeks=!0:null!=l?p(t)._overflowWeekday=!0:(s=Rt(n,i,r,a,o),t._a[0]=s.year,t._dayOfYear=s.dayOfYear)}(t),null!=t._dayOfYear&&(o=le(t._a[0],i[0]),(t._dayOfYear>vt(o)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Yt(o,0,t._dayOfYear),t._a[1]=n.getUTCMonth(),t._a[2]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=s[e]=i[e];for(;e<7;e++)t._a[e]=s[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[3]&&0===t._a[4]&&0===t._a[5]&&0===t._a[6]&&(t._nextDay=!0,t._a[3]=0),t._d=(t._useUTC?Yt:It).apply(null,s),a=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[3]=24),t._w&&void 0!==t._w.d&&t._w.d!==a&&(p(t).weekdayMismatch=!0)}}var ce=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,de=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,he=/Z|[+-]\d\d(?::?\d\d)?/,fe=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],pe=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],me=/^\/?Date\((\-?\d+)/i;function ge(t){var e,n,i,r,a,o,s=t._i,l=ce.exec(s)||de.exec(s);if(l){for(p(t).iso=!0,e=0,n=fe.length;e0&&p(t).unusedInput.push(o),s=s.slice(s.indexOf(n)+n.length),u+=n.length),z[a]?(n?p(t).empty=!1:p(t).unusedTokens.push(a),gt(a,n,t)):t._strict&&!n&&p(t).unusedTokens.push(a);p(t).charsLeftOver=l-u,s.length>0&&p(t).unusedInput.push(s),t._a[3]<=12&&!0===p(t).bigHour&&t._a[3]>0&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[3]=function(t,e,n){var i;return null==n?e:null!=t.meridiemHour?t.meridiemHour(e,n):null!=t.isPM?((i=t.isPM(n))&&e<12&&(e+=12),i||12!==e||(e=0),e):e}(t._locale,t._a[3],t._meridiem),ue(t),se(t)}else ye(t);else ge(t)}function ke(t){var e=t._i,n=t._f;return t._locale=t._locale||oe(t._l),null===e||void 0===n&&""===e?g({nullInput:!0}):("string"==typeof e&&(t._i=e=t._locale.preparse(e)),k(e)?new b(se(e)):(u(e)?t._d=e:a(n)?function(t){var e,n,i,r,a;if(0===t._f.length)return p(t).invalidFormat=!0,void(t._d=new Date(NaN));for(r=0;rthis?this:t:g()}));function Ce(t,e){var n,i;if(1===e.length&&a(e[0])&&(e=e[0]),!e.length)return Me();for(n=e[0],i=1;i(a=Ht(t,i,r))&&(e=a),Qe.call(this,t,e,n,i,r))}function Qe(t,e,n,i,r){var a=Rt(t,e,n,i,r),o=Yt(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}W(0,["gg",2],0,(function(){return this.weekYear()%100})),W(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Ze("gggg","weekYear"),Ze("ggggg","weekYear"),Ze("GGGG","isoWeekYear"),Ze("GGGGG","isoWeekYear"),I("weekYear","gg"),I("isoWeekYear","GG"),N("weekYear",1),N("isoWeekYear",1),ct("G",at),ct("g",at),ct("GG",Q,K),ct("gg",Q,K),ct("GGGG",nt,Z),ct("gggg",nt,Z),ct("GGGGG",it,$),ct("ggggg",it,$),mt(["gggg","ggggg","GGGG","GGGGG"],(function(t,e,n,i){e[i.substr(0,2)]=M(t)})),mt(["gg","GG"],(function(t,e,n,i){e[i]=r.parseTwoDigitYear(t)})),W("Q",0,"Qo","quarter"),I("quarter","Q"),N("quarter",7),ct("Q",G),pt("Q",(function(t,e){e[1]=3*(M(t)-1)})),W("D",["DD",2],"Do","date"),I("date","D"),N("date",9),ct("D",Q),ct("DD",Q,K),ct("Do",(function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient})),pt(["D","DD"],2),pt("Do",(function(t,e){e[2]=M(t.match(Q)[0])}));var Xe=kt("Date",!0);W("DDD",["DDDD",3],"DDDo","dayOfYear"),I("dayOfYear","DDD"),N("dayOfYear",4),ct("DDD",et),ct("DDDD",J),pt(["DDD","DDDD"],(function(t,e,n){n._dayOfYear=M(t)})),W("m",["mm",2],0,"minute"),I("minute","m"),N("minute",14),ct("m",Q),ct("mm",Q,K),pt(["m","mm"],4);var tn=kt("Minutes",!1);W("s",["ss",2],0,"second"),I("second","s"),N("second",15),ct("s",Q),ct("ss",Q,K),pt(["s","ss"],5);var en,nn=kt("Seconds",!1);for(W("S",0,0,(function(){return~~(this.millisecond()/100)})),W(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),W(0,["SSS",3],0,"millisecond"),W(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),W(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),W(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),W(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),W(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),W(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),I("millisecond","ms"),N("millisecond",16),ct("S",et,G),ct("SS",et,K),ct("SSS",et,J),en="SSSS";en.length<=9;en+="S")ct(en,rt);function rn(t,e){e[6]=M(1e3*("0."+t))}for(en="S";en.length<=9;en+="S")pt(en,rn);var an=kt("Milliseconds",!1);W("z",0,0,"zoneAbbr"),W("zz",0,0,"zoneName");var on=b.prototype;function sn(t){return t}on.add=We,on.calendar=function(t,e){var n=t||Me(),i=Ie(n,this).startOf("day"),a=r.calendarFormat(this,i)||"sameElse",o=e&&(E(e[a])?e[a].call(this,n):e[a]);return this.format(o||this.localeData().calendar(a,this,Me(n)))},on.clone=function(){return new b(this)},on.diff=function(t,e,n){var i,r,a;if(!this.isValid())return NaN;if(!(i=Ie(t,this)).isValid())return NaN;switch(r=6e4*(i.utcOffset()-this.utcOffset()),e=Y(e)){case"year":a=qe(this,i)/12;break;case"month":a=qe(this,i);break;case"quarter":a=qe(this,i)/3;break;case"second":a=(this-i)/1e3;break;case"minute":a=(this-i)/6e4;break;case"hour":a=(this-i)/36e5;break;case"day":a=(this-i-r)/864e5;break;case"week":a=(this-i-r)/6048e5;break;default:a=this-i}return n?a:w(a)},on.endOf=function(t){return void 0===(t=Y(t))||"millisecond"===t?this:("date"===t&&(t="day"),this.startOf(t).add(1,"isoWeek"===t?"week":t).subtract(1,"ms"))},on.format=function(t){t||(t=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var e=U(this,t);return this.localeData().postformat(e)},on.from=function(t,e){return this.isValid()&&(k(t)&&t.isValid()||Me(t).isValid())?He({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},on.fromNow=function(t){return this.from(Me(),t)},on.to=function(t,e){return this.isValid()&&(k(t)&&t.isValid()||Me(t).isValid())?He({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},on.toNow=function(t){return this.to(Me(),t)},on.get=function(t){return E(this[t=Y(t)])?this[t]():this},on.invalidAt=function(){return p(this).overflow},on.isAfter=function(t,e){var n=k(t)?t:Me(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=Y(s(e)?"millisecond":e))?this.valueOf()>n.valueOf():n.valueOf()9999?U(n,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):E(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",U(n,"Z")):U(n,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},on.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t="moment",e="";this.isLocal()||(t=0===this.utcOffset()?"moment.utc":"moment.parseZone",e="Z");var n="["+t+'("]',i=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY";return this.format(n+i+"-MM-DD[T]HH:mm:ss.SSS"+e+'[")]')},on.toJSON=function(){return this.isValid()?this.toISOString():null},on.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},on.unix=function(){return Math.floor(this.valueOf()/1e3)},on.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},on.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},on.year=bt,on.isLeapYear=function(){return _t(this.year())},on.weekYear=function(t){return $e.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},on.isoWeekYear=function(t){return $e.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},on.quarter=on.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},on.month=Et,on.daysInMonth=function(){return St(this.year(),this.month())},on.week=on.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},on.isoWeek=on.isoWeeks=function(t){var e=Nt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},on.weeksInYear=function(){var t=this.localeData()._week;return Ht(this.year(),t.dow,t.doy)},on.isoWeeksInYear=function(){return Ht(this.year(),1,4)},on.date=Xe,on.day=on.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(t=function(t,e){return"string"!=typeof t?t:isNaN(t)?"number"==typeof(t=e.weekdaysParse(t))?t:null:parseInt(t,10)}(t,this.localeData()),this.add(t-e,"d")):e},on.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},on.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null!=t){var e=function(t,e){return"string"==typeof t?e.weekdaysParse(t)%7||7:isNaN(t)?null:t}(t,this.localeData());return this.day(this.day()%7?e:e-7)}return this.day()||7},on.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},on.hour=on.hours=Qt,on.minute=on.minutes=tn,on.second=on.seconds=nn,on.millisecond=on.milliseconds=an,on.utcOffset=function(t,e,n){var i,a=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null!=t){if("string"==typeof t){if(null===(t=Ae(st,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(i=Ye(this)),this._offset=t,this._isUTC=!0,null!=i&&this.add(i,"m"),a!==t&&(!e||this._changeInProgress?ze(this,He(t-a,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,r.updateOffset(this,!0),this._changeInProgress=null)),this}return this._isUTC?a:Ye(this)},on.utc=function(t){return this.utcOffset(0,t)},on.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(Ye(this),"m")),this},on.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var t=Ae(ot,this._i);null!=t?this.utcOffset(t):this.utcOffset(0,!0)}return this},on.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Me(t).utcOffset():0,(this.utcOffset()-t)%60==0)},on.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},on.isLocal=function(){return!!this.isValid()&&!this._isUTC},on.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},on.isUtc=Fe,on.isUTC=Fe,on.zoneAbbr=function(){return this._isUTC?"UTC":""},on.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},on.dates=C("dates accessor is deprecated. Use date instead.",Xe),on.months=C("months accessor is deprecated. Use month instead",Et),on.years=C("years accessor is deprecated. Use year instead",bt),on.zone=C("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",(function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()})),on.isDSTShifted=C("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",(function(){if(!s(this._isDSTShifted))return this._isDSTShifted;var t={};if(_(t,this),(t=ke(t))._a){var e=t._isUTC?f(t._a):Me(t._a);this._isDSTShifted=this.isValid()&&S(t._a,e.toArray())>0}else this._isDSTShifted=!1;return this._isDSTShifted}));var ln=O.prototype;function un(t,e,n,i){var r=oe(),a=f().set(i,e);return r[n](a,t)}function cn(t,e,n){if(l(t)&&(e=t,t=void 0),t=t||"",null!=e)return un(t,e,n,"month");var i,r=[];for(i=0;i<12;i++)r[i]=un(t,i,n,"month");return r}function dn(t,e,n,i){"boolean"==typeof t?(l(e)&&(n=e,e=void 0),e=e||""):(n=e=t,t=!1,l(e)&&(n=e,e=void 0),e=e||"");var r,a=oe(),o=t?a._week.dow:0;if(null!=n)return un(e,(n+o)%7,i,"day");var s=[];for(r=0;r<7;r++)s[r]=un(e,(r+o)%7,i,"day");return s}ln.calendar=function(t,e,n){var i=this._calendar[t]||this._calendar.sameElse;return E(i)?i.call(e,n):i},ln.longDateFormat=function(t){var e=this._longDateFormat[t],n=this._longDateFormat[t.toUpperCase()];return e||!n?e:(this._longDateFormat[t]=n.replace(/MMMM|MM|DD|dddd/g,(function(t){return t.slice(1)})),this._longDateFormat[t])},ln.invalidDate=function(){return this._invalidDate},ln.ordinal=function(t){return this._ordinal.replace("%d",t)},ln.preparse=sn,ln.postformat=sn,ln.relativeTime=function(t,e,n,i){var r=this._relativeTime[n];return E(r)?r(t,e,n,i):r.replace(/%d/i,t)},ln.pastFuture=function(t,e){var n=this._relativeTime[t>0?"future":"past"];return E(n)?n(e):n.replace(/%s/i,e)},ln.set=function(t){var e,n;for(n in t)E(e=t[n])?this[n]=e:this["_"+n]=e;this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},ln.months=function(t,e){return t?a(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||xt).test(e)?"format":"standalone"][t.month()]:a(this._months)?this._months:this._months.standalone},ln.monthsShort=function(t,e){return t?a(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[xt.test(e)?"format":"standalone"][t.month()]:a(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},ln.monthsParse=function(t,e,n){var i,r,a;if(this._monthsParseExact)return Lt.call(this,t,e,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),i=0;i<12;i++){if(r=f([2e3,i]),n&&!this._longMonthsParse[i]&&(this._longMonthsParse[i]=new RegExp("^"+this.months(r,"").replace(".","")+"$","i"),this._shortMonthsParse[i]=new RegExp("^"+this.monthsShort(r,"").replace(".","")+"$","i")),n||this._monthsParse[i]||(a="^"+this.months(r,"")+"|^"+this.monthsShort(r,""),this._monthsParse[i]=new RegExp(a.replace(".",""),"i")),n&&"MMMM"===e&&this._longMonthsParse[i].test(t))return i;if(n&&"MMM"===e&&this._shortMonthsParse[i].test(t))return i;if(!n&&this._monthsParse[i].test(t))return i}},ln.monthsRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||At.call(this),t?this._monthsStrictRegex:this._monthsRegex):(d(this,"_monthsRegex")||(this._monthsRegex=Ot),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},ln.monthsShortRegex=function(t){return this._monthsParseExact?(d(this,"_monthsRegex")||At.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(d(this,"_monthsShortRegex")||(this._monthsShortRegex=Pt),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},ln.week=function(t){return Nt(t,this._week.dow,this._week.doy).week},ln.firstDayOfYear=function(){return this._week.doy},ln.firstDayOfWeek=function(){return this._week.dow},ln.weekdays=function(t,e){return t?a(this._weekdays)?this._weekdays[t.day()]:this._weekdays[this._weekdays.isFormat.test(e)?"format":"standalone"][t.day()]:a(this._weekdays)?this._weekdays:this._weekdays.standalone},ln.weekdaysMin=function(t){return t?this._weekdaysMin[t.day()]:this._weekdaysMin},ln.weekdaysShort=function(t){return t?this._weekdaysShort[t.day()]:this._weekdaysShort},ln.weekdaysParse=function(t,e,n){var i,r,a;if(this._weekdaysParseExact)return zt.call(this,t,e,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),i=0;i<7;i++){if(r=f([2e3,1]).day(i),n&&!this._fullWeekdaysParse[i]&&(this._fullWeekdaysParse[i]=new RegExp("^"+this.weekdays(r,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[i]=new RegExp("^"+this.weekdaysShort(r,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[i]=new RegExp("^"+this.weekdaysMin(r,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[i]||(a="^"+this.weekdays(r,"")+"|^"+this.weekdaysShort(r,"")+"|^"+this.weekdaysMin(r,""),this._weekdaysParse[i]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===e&&this._fullWeekdaysParse[i].test(t))return i;if(n&&"ddd"===e&&this._shortWeekdaysParse[i].test(t))return i;if(n&&"dd"===e&&this._minWeekdaysParse[i].test(t))return i;if(!n&&this._weekdaysParse[i].test(t))return i}},ln.weekdaysRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Gt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(d(this,"_weekdaysRegex")||(this._weekdaysRegex=Wt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},ln.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Gt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(d(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Ut),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},ln.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(d(this,"_weekdaysRegex")||Gt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(d(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},ln.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},ln.meridiem=function(t,e,n){return t>11?n?"pm":"PM":n?"am":"AM"},re("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===M(t%100/10)?"th":1===e?"st":2===e?"nd":3===e?"rd":"th")}}),r.lang=C("moment.lang is deprecated. Use moment.locale instead.",re),r.langData=C("moment.langData is deprecated. Use moment.localeData instead.",oe);var hn=Math.abs;function fn(t,e,n,i){var r=He(e,n);return t._milliseconds+=i*r._milliseconds,t._days+=i*r._days,t._months+=i*r._months,t._bubble()}function pn(t){return t<0?Math.floor(t):Math.ceil(t)}function mn(t){return 4800*t/146097}function gn(t){return 146097*t/4800}function vn(t){return function(){return this.as(t)}}var _n=vn("ms"),yn=vn("s"),bn=vn("m"),kn=vn("h"),wn=vn("d"),Mn=vn("w"),Sn=vn("M"),xn=vn("y");function Cn(t){return function(){return this.isValid()?this._data[t]:NaN}}var Dn=Cn("milliseconds"),Ln=Cn("seconds"),Tn=Cn("minutes"),En=Cn("hours"),Pn=Cn("days"),On=Cn("months"),An=Cn("years"),In=Math.round,Yn={ss:44,s:45,m:45,h:22,d:26,M:11};function Fn(t,e,n,i,r){return r.relativeTime(e||1,!!n,t,i)}var Rn=Math.abs;function Nn(t){return(t>0)-(t<0)||+t}function Hn(){if(!this.isValid())return this.localeData().invalidDate();var t,e,n=Rn(this._milliseconds)/1e3,i=Rn(this._days),r=Rn(this._months);t=w(n/60),e=w(t/60),n%=60,t%=60;var a=w(r/12),o=r%=12,s=i,l=e,u=t,c=n?n.toFixed(3).replace(/\.?0+$/,""):"",d=this.asSeconds();if(!d)return"P0D";var h=d<0?"-":"",f=Nn(this._months)!==Nn(d)?"-":"",p=Nn(this._days)!==Nn(d)?"-":"",m=Nn(this._milliseconds)!==Nn(d)?"-":"";return h+"P"+(a?f+a+"Y":"")+(o?f+o+"M":"")+(s?p+s+"D":"")+(l||u||c?"T":"")+(l?m+l+"H":"")+(u?m+u+"M":"")+(c?m+c+"S":"")}var jn=Le.prototype;return jn.isValid=function(){return this._isValid},jn.abs=function(){var t=this._data;return this._milliseconds=hn(this._milliseconds),this._days=hn(this._days),this._months=hn(this._months),t.milliseconds=hn(t.milliseconds),t.seconds=hn(t.seconds),t.minutes=hn(t.minutes),t.hours=hn(t.hours),t.months=hn(t.months),t.years=hn(t.years),this},jn.add=function(t,e){return fn(this,t,e,1)},jn.subtract=function(t,e){return fn(this,t,e,-1)},jn.as=function(t){if(!this.isValid())return NaN;var e,n,i=this._milliseconds;if("month"===(t=Y(t))||"year"===t)return n=this._months+mn(e=this._days+i/864e5),"month"===t?n:n/12;switch(e=this._days+Math.round(gn(this._months)),t){case"week":return e/7+i/6048e5;case"day":return e+i/864e5;case"hour":return 24*e+i/36e5;case"minute":return 1440*e+i/6e4;case"second":return 86400*e+i/1e3;case"millisecond":return Math.floor(864e5*e)+i;default:throw new Error("Unknown unit "+t)}},jn.asMilliseconds=_n,jn.asSeconds=yn,jn.asMinutes=bn,jn.asHours=kn,jn.asDays=wn,jn.asWeeks=Mn,jn.asMonths=Sn,jn.asYears=xn,jn.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*M(this._months/12):NaN},jn._bubble=function(){var t,e,n,i,r,a=this._milliseconds,o=this._days,s=this._months,l=this._data;return a>=0&&o>=0&&s>=0||a<=0&&o<=0&&s<=0||(a+=864e5*pn(gn(s)+o),o=0,s=0),l.milliseconds=a%1e3,t=w(a/1e3),l.seconds=t%60,e=w(t/60),l.minutes=e%60,n=w(e/60),l.hours=n%24,o+=w(n/24),s+=r=w(mn(o)),o-=pn(gn(r)),i=w(s/12),s%=12,l.days=o,l.months=s,l.years=i,this},jn.clone=function(){return He(this)},jn.get=function(t){return t=Y(t),this.isValid()?this[t+"s"]():NaN},jn.milliseconds=Dn,jn.seconds=Ln,jn.minutes=Tn,jn.hours=En,jn.days=Pn,jn.weeks=function(){return w(this.days()/7)},jn.months=On,jn.years=An,jn.humanize=function(t){if(!this.isValid())return this.localeData().invalidDate();var e=this.localeData(),n=function(t,e,n){var i=He(t).abs(),r=In(i.as("s")),a=In(i.as("m")),o=In(i.as("h")),s=In(i.as("d")),l=In(i.as("M")),u=In(i.as("y")),c=r<=Yn.ss&&["s",r]||r0,c[4]=n,Fn.apply(null,c)}(this,!t,e);return t&&(n=e.pastFuture(+this,n)),e.postformat(n)},jn.toISOString=Hn,jn.toString=Hn,jn.toJSON=Hn,jn.locale=Ge,jn.localeData=Je,jn.toIsoString=C("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Hn),jn.lang=Ke,W("X",0,0,"unix"),W("x",0,0,"valueOf"),ct("x",at),ct("X",/[+-]?\d+(\.\d{1,3})?/),pt("X",(function(t,e,n){n._d=new Date(1e3*parseFloat(t,10))})),pt("x",(function(t,e,n){n._d=new Date(M(t))})),r.version="2.22.2",e=Me,r.fn=on,r.min=function(){var t=[].slice.call(arguments,0);return Ce("isBefore",t)},r.max=function(){var t=[].slice.call(arguments,0);return Ce("isAfter",t)},r.now=function(){return Date.now?Date.now():+new Date},r.utc=f,r.unix=function(t){return Me(1e3*t)},r.months=function(t,e){return cn(t,e,"months")},r.isDate=u,r.locale=re,r.invalid=g,r.duration=He,r.isMoment=k,r.weekdays=function(t,e,n){return dn(t,e,n,"weekdays")},r.parseZone=function(){return Me.apply(null,arguments).parseZone()},r.localeData=oe,r.isDuration=Te,r.monthsShort=function(t,e){return cn(t,e,"monthsShort")},r.weekdaysMin=function(t,e,n){return dn(t,e,n,"weekdaysMin")},r.defineLocale=ae,r.updateLocale=function(t,e){if(null!=e){var n,i,r=Xt;null!=(i=ie(t))&&(r=i._config),(n=new O(e=P(r,e))).parentLocale=te[t],te[t]=n,re(t)}else null!=te[t]&&(null!=te[t].parentLocale?te[t]=te[t].parentLocale:null!=te[t]&&delete te[t]);return te[t]},r.locales=function(){return D(te)},r.weekdaysShort=function(t,e,n){return dn(t,e,n,"weekdaysShort")},r.normalizeUnits=Y,r.relativeTimeRounding=function(t){return void 0===t?In:"function"==typeof t&&(In=t,!0)},r.relativeTimeThreshold=function(t,e){return void 0!==Yn[t]&&(void 0===e?Yn[t]:(Yn[t]=e,"s"===t&&(Yn.ss=e-1),!0))},r.calendarFormat=function(t,e){var n=t.diff(e,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},r.prototype=on,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"YYYY-[W]WW",MONTH:"YYYY-MM"},r}()}).call(this,n("YuTi")(t))},x6pH:function(t,e,n){!function(t){"use strict";t.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(t){return 2===t?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":t+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(t){return 2===t?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":t+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(t){return 2===t?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":t+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(t){return 2===t?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":t%10==0&&10!==t?t+" \u05e9\u05e0\u05d4":t+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(t){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(t)},meridiem:function(t,e,n){return t<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":t<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":t<12?n?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":t<18?n?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}})}(n("wd/R"))},x8uC:function(t,e,n){"use strict";var i=n("CDJp"),r=n("K2E3"),a=n("RDha");i._set("global",{tooltips:{enabled:!0,custom:null,mode:"nearest",position:"average",intersect:!0,backgroundColor:"rgba(0,0,0,0.8)",titleFontStyle:"bold",titleSpacing:2,titleMarginBottom:6,titleFontColor:"#fff",titleAlign:"left",bodySpacing:2,bodyFontColor:"#fff",bodyAlign:"left",footerFontStyle:"bold",footerSpacing:2,footerMarginTop:6,footerFontColor:"#fff",footerAlign:"left",yPadding:6,xPadding:6,caretPadding:2,caretSize:5,cornerRadius:6,multiKeyBackground:"#fff",displayColors:!0,borderColor:"rgba(0,0,0,0)",borderWidth:0,callbacks:{beforeTitle:a.noop,title:function(t,e){var n="",i=e.labels,r=i?i.length:0;if(t.length>0){var a=t[0];a.xLabel?n=a.xLabel:r>0&&a.indexi.width&&(r=i.width-e.width),r<0&&(r=0)),"top"===l?a+=u:a-="bottom"===l?e.height+u:e.height/2,"center"===l?"left"===s?r+=u:"right"===s&&(r-=u):"left"===s?r-=c:"right"===s&&(r+=c),{x:r,y:a}}(p,y,v=function(t,e){var n,i,r,a,o,s=t._model,l=t._chart,u=t._chart.chartArea,c="center",d="center";s.yl.height-e.height&&(d="bottom");var h=(u.left+u.right)/2,f=(u.top+u.bottom)/2;"center"===d?(n=function(t){return t<=h},i=function(t){return t>h}):(n=function(t){return t<=e.width/2},i=function(t){return t>=l.width-e.width/2}),r=function(t){return t+e.width+s.caretSize+s.caretPadding>l.width},a=function(t){return t-e.width-s.caretSize-s.caretPadding<0},o=function(t){return t<=f?"top":"bottom"},n(s.x)?(c="left",r(s.x)&&(c="center",d=o(s.y))):i(s.x)&&(c="right",a(s.x)&&(c="center",d=o(s.y)));var p=t._options;return{xAlign:p.xAlign?p.xAlign:c,yAlign:p.yAlign?p.yAlign:d}}(this,y),d._chart)}else p.opacity=0;return p.xAlign=v.xAlign,p.yAlign=v.yAlign,p.x=_.x,p.y=_.y,p.width=y.width,p.height=y.height,p.caretX=b.x,p.caretY=b.y,d._model=p,e&&h.custom&&h.custom.call(d,p),d},drawCaret:function(t,e){var n=this._chart.ctx,i=this.getCaretPosition(t,e,this._view);n.lineTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.lineTo(i.x3,i.y3)},getCaretPosition:function(t,e,n){var i,r,a,o,s,l,u=n.caretSize,c=n.cornerRadius,d=n.xAlign,h=n.yAlign,f=t.x,p=t.y,m=e.width,g=e.height;if("center"===h)s=p+g/2,"left"===d?(r=(i=f)-u,a=i,o=s+u,l=s-u):(r=(i=f+m)+u,a=i,o=s-u,l=s+u);else if("left"===d?(i=(r=f+c+u)-u,a=r+u):"right"===d?(i=(r=f+m-c-u)-u,a=r+u):(i=(r=n.caretX)-u,a=r+u),"top"===h)s=(o=p)-u,l=o;else{s=(o=p+g)+u,l=o;var v=a;a=i,i=v}return{x1:i,x2:r,x3:a,y1:o,y2:s,y3:l}},drawTitle:function(t,n,i,r){var o=n.title;if(o.length){i.textAlign=n._titleAlign,i.textBaseline="top";var s,l,u=n.titleFontSize,c=n.titleSpacing;for(i.fillStyle=e(n.titleFontColor,r),i.font=a.fontString(u,n._titleFontStyle,n._titleFontFamily),s=0,l=o.length;s0&&i.stroke()},draw:function(){var t=this._chart.ctx,e=this._view;if(0!==e.opacity){var n={width:e.width,height:e.height},i={x:e.x,y:e.y},r=Math.abs(e.opacity<.001)?0:e.opacity;this._options.enabled&&(e.title.length||e.beforeBody.length||e.body.length||e.afterBody.length||e.footer.length)&&(this.drawBackground(i,e,t,n,r),i.x+=e.xPadding,i.y+=e.yPadding,this.drawTitle(i,e,t,r),this.drawBody(i,e,t,r),this.drawFooter(i,e,t,r))}},handleEvent:function(t){var e,n=this,i=n._options;return n._lastActive=n._lastActive||[],n._active="mouseout"===t.type?[]:n._chart.getElementsAtEventForMode(t,i.mode,i),(e=!a.arrayEquals(n._active,n._lastActive))&&(n._lastActive=n._active,(i.enabled||i.custom)&&(n._eventPosition={x:t.x,y:t.y},n.update(!0),n.pivot())),e}}),t.Tooltip.positioners={average:function(t){if(!t.length)return!1;var e,n,i=0,r=0,a=0;for(e=0,n=t.length;e11?n?"d'o":"D'O":n?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:e,ss:e,m:e,mm:e,h:e,hh:e,d:e,dd:e,M:e,MM:e,y:e,yy:e},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},z3Vd:function(t,e,n){!function(t){"use strict";var e="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function n(t,n,i,r){var a=function(t){var n=Math.floor(t%1e3/100),i=Math.floor(t%100/10),r=t%10,a="";return n>0&&(a+=e[n]+"vatlh"),i>0&&(a+=(""!==a?" ":"")+e[i]+"maH"),r>0&&(a+=(""!==a?" ":"")+e[r]),""===a?"pagh":a}(t);switch(i){case"ss":return a+" lup";case"mm":return a+" tup";case"hh":return a+" rep";case"dd":return a+" jaj";case"MM":return a+" jar";case"yy":return a+" DIS"}}t.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"leS":-1!==t.indexOf("jar")?e.slice(0,-3)+"waQ":-1!==t.indexOf("DIS")?e.slice(0,-3)+"nem":e+" pIq"},past:function(t){var e=t;return-1!==t.indexOf("jaj")?e.slice(0,-3)+"Hu\u2019":-1!==t.indexOf("jar")?e.slice(0,-3)+"wen":-1!==t.indexOf("DIS")?e.slice(0,-3)+"ben":e+" ret"},s:"puS lup",ss:n,m:"wa\u2019 tup",mm:n,h:"wa\u2019 rep",hh:n,d:"wa\u2019 jaj",dd:n,M:"wa\u2019 jar",MM:n,y:"wa\u2019 DIS",yy:n},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}})}(n("wd/R"))},zUnb:function(t,e,n){"use strict";function i(t){return(i=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function r(t,e,n){return(r="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var r=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=i(t)););return t}(t,e);if(r){var a=Object.getOwnPropertyDescriptor(r,e);return a.get?a.get.call(n):a.value}})(t,e,n||t)}function a(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function o(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[e++]}},e:function(t){throw t},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,r,a=!0,o=!1;return{s:function(){i=t[Symbol.iterator]()},n:function(){var t=i.next();return a=t.done,t},e:function(t){o=!0,r=t},f:function(){try{a||null==i.return||i.return()}finally{if(o)throw r}}}}function h(t,e){return(h=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function f(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&h(t,e)}function p(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(t){return!1}}function m(t){return(m="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function g(t,e){return!e||"object"!==m(e)&&"function"!=typeof e?a(t):e}function v(t){var e=p();return function(){var n,r=i(t);if(e){var a=i(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return g(this,n)}}function _(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function y(t,e){for(var n=0;n4&&void 0!==arguments[4]?arguments[4]:new G(t,n,i);if(!r.closed)return e instanceof H?e.subscribe(r):X(e)(r)}var et=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"notifyNext",value:function(t,e,n,i,r){this.destination.next(e)}},{key:"notifyError",value:function(t,e){this.destination.error(t)}},{key:"notifyComplete",value:function(t){this.destination.complete()}}]),n}(A);function nt(t,e){return function(n){if("function"!=typeof t)throw new TypeError("argument is not a function. Are you looking for `mapTo()`?");return n.lift(new it(t,e))}}var it=function(){function t(e,n){_(this,t),this.project=e,this.thisArg=n}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new rt(t,this.project,this.thisArg))}}]),t}(),rt=function(t){f(n,t);var e=v(n);function n(t,i,r){var o;return _(this,n),(o=e.call(this,t)).project=i,o.count=0,o.thisArg=r||a(o),o}return b(n,[{key:"_next",value:function(t){var e;try{e=this.project.call(this.thisArg,t,this.count++)}catch(n){return void this.destination.error(n)}this.destination.next(e)}}]),n}(A);function at(t,e){return new H((function(n){var i=new C,r=0;return i.add(e.schedule((function(){r!==t.length?(n.next(t[r++]),n.closed||i.add(this.schedule())):n.complete()}))),i}))}function ot(t,e){return e?function(t,e){if(null!=t){if(function(t){return t&&"function"==typeof t[Y]}(t))return function(t,e){return new H((function(n){var i=new C;return i.add(e.schedule((function(){var r=t[Y]();i.add(r.subscribe({next:function(t){i.add(e.schedule((function(){return n.next(t)})))},error:function(t){i.add(e.schedule((function(){return n.error(t)})))},complete:function(){i.add(e.schedule((function(){return n.complete()})))}}))}))),i}))}(t,e);if(Q(t))return function(t,e){return new H((function(n){var i=new C;return i.add(e.schedule((function(){return t.then((function(t){i.add(e.schedule((function(){n.next(t),i.add(e.schedule((function(){return n.complete()})))})))}),(function(t){i.add(e.schedule((function(){return n.error(t)})))}))}))),i}))}(t,e);if($(t))return at(t,e);if(function(t){return t&&"function"==typeof t[Z]}(t)||"string"==typeof t)return function(t,e){if(!t)throw new Error("Iterable cannot be null");return new H((function(n){var i,r=new C;return r.add((function(){i&&"function"==typeof i.return&&i.return()})),r.add(e.schedule((function(){i=t[Z](),r.add(e.schedule((function(){if(!n.closed){var t,e;try{var r=i.next();t=r.value,e=r.done}catch(a){return void n.error(a)}e?n.complete():(n.next(t),this.schedule())}})))}))),r}))}(t,e)}throw new TypeError((null!==t&&typeof t||t)+" is not observable")}(t,e):t instanceof H?t:new H(X(t))}function st(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.POSITIVE_INFINITY;return"function"==typeof e?function(i){return i.pipe(st((function(n,i){return ot(t(n,i)).pipe(nt((function(t,r){return e(n,t,i,r)})))}),n))}:("number"==typeof e&&(n=e),function(e){return e.lift(new lt(t,n))})}var lt=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.POSITIVE_INFINITY;_(this,t),this.project=e,this.concurrent=n}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new ut(t,this.project,this.concurrent))}}]),t}(),ut=function(t){f(n,t);var e=v(n);function n(t,i){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.POSITIVE_INFINITY;return _(this,n),(r=e.call(this,t)).project=i,r.concurrent=a,r.hasCompleted=!1,r.buffer=[],r.active=0,r.index=0,r}return b(n,[{key:"_next",value:function(t){this.active0?this._next(e.shift()):0===this.active&&this.hasCompleted&&this.destination.complete()}}]),n}(et);function ct(t){return t}function dt(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Number.POSITIVE_INFINITY;return st(ct,t)}function ht(t,e){return e?at(t,e):new H(K(t))}function ft(){for(var t=Number.POSITIVE_INFINITY,e=null,n=arguments.length,i=new Array(n),r=0;r1&&"number"==typeof i[i.length-1]&&(t=i.pop())):"number"==typeof a&&(t=i.pop()),null===e&&1===i.length&&i[0]instanceof H?i[0]:dt(t)(ht(i,e))}function pt(){return function(t){return t.lift(new mt(t))}}var mt=function(){function t(e){_(this,t),this.connectable=e}return b(t,[{key:"call",value:function(t,e){var n=this.connectable;n._refCount++;var i=new gt(t,n),r=e.subscribe(i);return i.closed||(i.connection=n.connect()),r}}]),t}(),gt=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).connectable=i,r}return b(n,[{key:"_unsubscribe",value:function(){var t=this.connectable;if(t){this.connectable=null;var e=t._refCount;if(e<=0)this.connection=null;else if(t._refCount=e-1,e>1)this.connection=null;else{var n=this.connection,i=t._connection;this.connection=null,!i||n&&i!==n||i.unsubscribe()}}else this.connection=null}}]),n}(A),vt=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this)).source=t,r.subjectFactory=i,r._refCount=0,r._isComplete=!1,r}return b(n,[{key:"_subscribe",value:function(t){return this.getSubject().subscribe(t)}},{key:"getSubject",value:function(){var t=this._subject;return t&&!t.isStopped||(this._subject=this.subjectFactory()),this._subject}},{key:"connect",value:function(){var t=this._connection;return t||(this._isComplete=!1,(t=this._connection=new C).add(this.source.subscribe(new yt(this.getSubject(),this))),t.closed&&(this._connection=null,t=C.EMPTY)),t}},{key:"refCount",value:function(){return pt()(this)}}]),n}(H),_t=function(){var t=vt.prototype;return{operator:{value:null},_refCount:{value:0,writable:!0},_subject:{value:null,writable:!0},_connection:{value:null,writable:!0},_subscribe:{value:t._subscribe},_isComplete:{value:t._isComplete,writable:!0},getSubject:{value:t.getSubject},connect:{value:t.connect},refCount:{value:t.refCount}}}(),yt=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).connectable=i,r}return b(n,[{key:"_error",value:function(t){this._unsubscribe(),r(i(n.prototype),"_error",this).call(this,t)}},{key:"_complete",value:function(){this.connectable._isComplete=!0,this._unsubscribe(),r(i(n.prototype),"_complete",this).call(this)}},{key:"_unsubscribe",value:function(){var t=this.connectable;if(t){this.connectable=null;var e=t._connection;t._refCount=0,t._subject=null,t._connection=null,e&&e.unsubscribe()}}}]),n}(z);function bt(){return new W}function kt(){return function(t){return pt()((e=bt,function(t){var n;n="function"==typeof e?e:function(){return e};var i=Object.create(t,_t);return i.source=t,i.subjectFactory=n,i})(t));var e}}function wt(t){return{toString:t}.toString()}var Mt="__parameters__";function St(t,e,n){return wt((function(){var i=function(t){return function(){if(t){var e=t.apply(void 0,arguments);for(var n in e)this[n]=e[n]}}}(e);function r(){for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:Tt.Default;if(void 0===he)throw new Error("inject() must be called from an injection context");return null===he?_e(t,void 0,e):he.get(t,e&Tt.Optional?null:void 0,e)}function ge(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Tt.Default;return(Kt||me)(qt(t),e)}var ve=ge;function _e(t,e,n){var i=It(t);if(i&&"root"==i.providedIn)return void 0===i.value?i.value=i.factory():i.value;if(n&Tt.Optional)return null;if(void 0!==e)return e;throw new Error("Injector: NOT_FOUND [".concat(Vt(t),"]"))}function ye(t){for(var e=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:ue;if(e===ue){var n=new Error("NullInjectorError: No provider for ".concat(Vt(t),"!"));throw n.name="NullInjectorError",n}return e}}]),t}();function ke(t,e,n,i){var r=t.ngTempTokenPath;throw e.__source&&r.unshift(e.__source),t.message=function(t,e,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;t=t&&"\n"===t.charAt(0)&&"\u0275"==t.charAt(1)?t.substr(2):t;var r=Vt(e);if(Array.isArray(e))r=e.map(Vt).join(" -> ");else if("object"==typeof e){var a=[];for(var o in e)if(e.hasOwnProperty(o)){var s=e[o];a.push(o+":"+("string"==typeof s?JSON.stringify(s):Vt(s)))}r="{".concat(a.join(", "),"}")}return"".concat(n).concat(i?"("+i+")":"","[").concat(r,"]: ").concat(t.replace(ce,"\n "))}("\n"+t.message,r,n,i),t.ngTokenPath=r,t.ngTempTokenPath=null,t}var we=function t(){_(this,t)},Me=function t(){_(this,t)};function Se(t,e){t.forEach((function(t){return Array.isArray(t)?Se(t,e):e(t)}))}function xe(t,e,n){e>=t.length?t.push(n):t.splice(e,0,n)}function Ce(t,e){return e>=t.length-1?t.pop():t.splice(e,1)[0]}function De(t,e){for(var n=[],i=0;i=0?t[1|i]=n:function(t,e,n,i){var r=t.length;if(r==e)t.push(n,i);else if(1===r)t.push(i,t[0]),t[0]=n;else{for(r--,t.push(t[r-1],t[r]);r>e;)t[r]=t[r-2],r--;t[e]=n,t[e+1]=i}}(t,i=~i,e,n),i}function Te(t,e){var n=Ee(t,e);if(n>=0)return t[1|n]}function Ee(t,e){return function(t,e,n){for(var i=0,r=t.length>>1;r!==i;){var a=i+(r-i>>1),o=t[a<<1];if(e===o)return a<<1;o>e?r=a:i=a+1}return~(r<<1)}(t,e)}var Pe=function(t){return t[t.OnPush=0]="OnPush",t[t.Default=1]="Default",t}({}),Oe=function(t){return t[t.Emulated=0]="Emulated",t[t.Native=1]="Native",t[t.None=2]="None",t[t.ShadowDom=3]="ShadowDom",t}({}),Ae={},Ie=[],Ye=0;function Fe(t){return wt((function(){var e={},n={type:t.type,providersResolver:null,decls:t.decls,vars:t.vars,factory:null,template:t.template||null,consts:t.consts||null,ngContentSelectors:t.ngContentSelectors,hostBindings:t.hostBindings||null,hostVars:t.hostVars||0,hostAttrs:t.hostAttrs||null,contentQueries:t.contentQueries||null,declaredInputs:e,inputs:null,outputs:null,exportAs:t.exportAs||null,onPush:t.changeDetection===Pe.OnPush,directiveDefs:null,pipeDefs:null,selectors:t.selectors||Ie,viewQuery:t.viewQuery||null,features:t.features||null,data:t.data||{},encapsulation:t.encapsulation||Oe.Emulated,id:"c",styles:t.styles||Ie,_:null,setInput:null,schemas:t.schemas||null,tView:null},i=t.directives,r=t.features,a=t.pipes;return n.id+=Ye++,n.inputs=Be(t.inputs,e),n.outputs=Be(t.outputs),r&&r.forEach((function(t){return t(n)})),n.directiveDefs=i?function(){return("function"==typeof i?i():i).map(Re)}:null,n.pipeDefs=a?function(){return("function"==typeof a?a():a).map(Ne)}:null,n}))}function Re(t){return We(t)||function(t){return t[ee]||null}(t)}function Ne(t){return function(t){return t[ne]||null}(t)}var He={};function je(t){var e={type:t.type,bootstrap:t.bootstrap||Ie,declarations:t.declarations||Ie,imports:t.imports||Ie,exports:t.exports||Ie,transitiveCompileScopes:null,schemas:t.schemas||null,id:t.id||null};return null!=t.id&&wt((function(){He[t.id]=t.type})),e}function Be(t,e){if(null==t)return Ae;var n={};for(var i in t)if(t.hasOwnProperty(i)){var r=t[i],a=r;Array.isArray(r)&&(a=r[1],r=r[0]),n[r]=i,e&&(e[r]=a)}return n}var Ve=Fe;function ze(t){return{type:t.type,name:t.name,factory:null,pure:!1!==t.pure,onDestroy:t.type.prototype.ngOnDestroy||null}}function We(t){return t[te]||null}function Ue(t,e){return t.hasOwnProperty(ae)?t[ae]:null}function qe(t,e){var n=t[ie]||null;if(!n&&!0===e)throw new Error("Type ".concat(Vt(t)," does not have '\u0275mod' property."));return n}function Ge(t){return Array.isArray(t)&&"object"==typeof t[1]}function Ke(t){return Array.isArray(t)&&!0===t[1]}function Je(t){return 0!=(8&t.flags)}function Ze(t){return 2==(2&t.flags)}function $e(t){return 1==(1&t.flags)}function Qe(t){return null!==t.template}function Xe(t){return 0!=(512&t[2])}var tn=function(){function t(e,n,i){_(this,t),this.previousValue=e,this.currentValue=n,this.firstChange=i}return b(t,[{key:"isFirstChange",value:function(){return this.firstChange}}]),t}();function en(){return nn}function nn(t){return t.type.prototype.ngOnChanges&&(t.setInput=an),rn}function rn(){var t=on(this),e=null==t?void 0:t.current;if(e){var n=t.previous;if(n===Ae)t.previous=e;else for(var i in e)n[i]=e[i];t.current=null,this.ngOnChanges(e)}}function an(t,e,n,i){var r=on(t)||function(t,e){return t.__ngSimpleChanges__=e}(t,{previous:Ae,current:null}),a=r.current||(r.current={}),o=r.previous,s=this.declaredInputs[n],l=o[s];a[s]=new tn(l&&l.currentValue,e,o===Ae),t[i]=e}function on(t){return t.__ngSimpleChanges__||null}en.ngInherit=!0;var sn=void 0;function ln(t){return!!t.listen}var un={createRenderer:function(t,e){return void 0!==sn?sn:"undefined"!=typeof document?document:void 0}};function cn(t){for(;Array.isArray(t);)t=t[0];return t}function dn(t,e){return cn(e[t+20])}function hn(t,e){return cn(e[t.index])}function fn(t,e){return t.data[e+20]}function pn(t,e){return t[e+20]}function mn(t,e){var n=e[t];return Ge(n)?n:n[0]}function gn(t){var e=function(t){return t.__ngContext__||null}(t);return e?Array.isArray(e)?e:e.lView:null}function vn(t){return 4==(4&t[2])}function _n(t){return 128==(128&t[2])}function yn(t,e){return null===t||null==e?null:t[e]}function bn(t){t[18]=0}function kn(t,e){t[5]+=e;for(var n=t,i=t[3];null!==i&&(1===e&&1===n[5]||-1===e&&0===n[5]);)i[5]+=e,n=i,i=i[3]}var wn={lFrame:Un(null),bindingsEnabled:!0,checkNoChangesMode:!1};function Mn(){return wn.bindingsEnabled}function Sn(){return wn.lFrame.lView}function xn(){return wn.lFrame.tView}function Cn(t){wn.lFrame.contextLView=t}function Dn(){return wn.lFrame.previousOrParentTNode}function Ln(t,e){wn.lFrame.previousOrParentTNode=t,wn.lFrame.isParent=e}function Tn(){return wn.lFrame.isParent}function En(){wn.lFrame.isParent=!1}function Pn(){return wn.checkNoChangesMode}function On(t){wn.checkNoChangesMode=t}function An(){var t=wn.lFrame,e=t.bindingRootIndex;return-1===e&&(e=t.bindingRootIndex=t.tView.bindingStartIndex),e}function In(){return wn.lFrame.bindingIndex}function Yn(){return wn.lFrame.bindingIndex++}function Fn(t){var e=wn.lFrame,n=e.bindingIndex;return e.bindingIndex=e.bindingIndex+t,n}function Rn(t,e){var n=wn.lFrame;n.bindingIndex=n.bindingRootIndex=t,Nn(e)}function Nn(t){wn.lFrame.currentDirectiveIndex=t}function Hn(t){var e=wn.lFrame.currentDirectiveIndex;return-1===e?null:t[e]}function jn(){return wn.lFrame.currentQueryIndex}function Bn(t){wn.lFrame.currentQueryIndex=t}function Vn(t,e){var n=Wn();wn.lFrame=n,n.previousOrParentTNode=e,n.lView=t}function zn(t,e){var n=Wn(),i=t[1];wn.lFrame=n,n.previousOrParentTNode=e,n.lView=t,n.tView=i,n.contextLView=t,n.bindingIndex=i.bindingStartIndex}function Wn(){var t=wn.lFrame,e=null===t?null:t.child;return null===e?Un(t):e}function Un(t){var e={previousOrParentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:0,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:t,child:null};return null!==t&&(t.child=e),e}function qn(){var t=wn.lFrame;return wn.lFrame=t.parent,t.previousOrParentTNode=null,t.lView=null,t}var Gn=qn;function Kn(){var t=qn();t.isParent=!0,t.tView=null,t.selectedIndex=0,t.contextLView=null,t.elementDepthCount=0,t.currentDirectiveIndex=-1,t.currentNamespace=null,t.bindingRootIndex=-1,t.bindingIndex=-1,t.currentQueryIndex=0}function Jn(t){return(wn.lFrame.contextLView=function(t,e){for(;t>0;)e=e[15],t--;return e}(t,wn.lFrame.contextLView))[8]}function Zn(){return wn.lFrame.selectedIndex}function $n(t){wn.lFrame.selectedIndex=t}function Qn(){var t=wn.lFrame;return fn(t.tView,t.selectedIndex)}function Xn(){wn.lFrame.currentNamespace="http://www.w3.org/2000/svg"}function ti(){wn.lFrame.currentNamespace=null}function ei(t,e){for(var n=e.directiveStart,i=e.directiveEnd;n=i)break}else e[o]<0&&(t[18]+=65536),(a>11>16&&(3&t[2])===e&&(t[2]+=2048,a.call(o)):a.call(o)}var si=function t(e,n,i){_(this,t),this.factory=e,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=i};function li(t,e,n){for(var i=ln(t),r=0;re){o=a-1;break}}}for(;a>16}function gi(t,e){for(var n=mi(t),i=e;n>0;)i=i[15],n--;return i}function vi(t){return"string"==typeof t?t:null==t?"":""+t}function _i(t){return"function"==typeof t?t.name||t.toString():"object"==typeof t&&null!=t&&"function"==typeof t.type?t.type.name||t.type.toString():vi(t)}var yi=function(){return("undefined"!=typeof requestAnimationFrame&&requestAnimationFrame||setTimeout).bind(Xt)}();function bi(t){return{name:"window",target:t.ownerDocument.defaultView}}function ki(t){return{name:"body",target:t.ownerDocument.body}}function wi(t){return t instanceof Function?t():t}var Mi=!0;function Si(t){var e=Mi;return Mi=t,e}var xi=0;function Ci(t,e){var n=Li(t,e);if(-1!==n)return n;var i=e[1];i.firstCreatePass&&(t.injectorIndex=e.length,Di(i.data,t),Di(e,null),Di(i.blueprint,null));var r=Ti(t,e),a=t.injectorIndex;if(fi(r))for(var o=pi(r),s=gi(r,e),l=s[1].data,u=0;u<8;u++)e[a+u]=s[o+u]|l[o+u];return e[a+8]=r,a}function Di(t,e){t.push(0,0,0,0,0,0,0,0,e)}function Li(t,e){return-1===t.injectorIndex||t.parent&&t.parent.injectorIndex===t.injectorIndex||null==e[t.injectorIndex+8]?-1:t.injectorIndex}function Ti(t,e){if(t.parent&&-1!==t.parent.injectorIndex)return t.parent.injectorIndex;for(var n=e[6],i=1;n&&-1===n.injectorIndex;)n=(e=e[15])?e[6]:null,i++;return n?n.injectorIndex|i<<16:-1}function Ei(t,e,n){!function(t,e,n){var i;"string"==typeof n?i=n.charCodeAt(0)||0:n.hasOwnProperty(oe)&&(i=n[oe]),null==i&&(i=n[oe]=xi++);var r=255&i,a=1<3&&void 0!==arguments[3]?arguments[3]:Tt.Default,r=arguments.length>4?arguments[4]:void 0;if(null!==t){var a=Fi(n);if("function"==typeof a){Vn(e,t);try{var o=a();if(null!=o||i&Tt.Optional)return o;throw new Error("No provider for ".concat(_i(n),"!"))}finally{Gn()}}else if("number"==typeof a){if(-1===a)return new Hi(t,e);var s=null,l=Li(t,e),u=-1,c=i&Tt.Host?e[16][6]:null;for((-1===l||i&Tt.SkipSelf)&&(u=-1===l?Ti(t,e):e[l+8],Ni(i,!1)?(s=e[1],l=pi(u),e=gi(u,e)):l=-1);-1!==l;){u=e[l+8];var d=e[1];if(Ri(a,l,d.data)){var h=Ai(l,e,n,s,i,c);if(h!==Oi)return h}Ni(i,e[1].data[l+8]===c)&&Ri(a,l,e)?(s=d,l=pi(u),e=gi(u,e)):l=-1}}}if(i&Tt.Optional&&void 0===r&&(r=null),0==(i&(Tt.Self|Tt.Host))){var f=e[9],p=pe(void 0);try{return f?f.get(n,r,i&Tt.Optional):_e(n,r,i&Tt.Optional)}finally{pe(p)}}if(i&Tt.Optional)return r;throw new Error("NodeInjector: NOT_FOUND [".concat(_i(n),"]"))}var Oi={};function Ai(t,e,n,i,r,a){var o=e[1],s=o.data[t+8],l=Ii(s,o,n,null==i?Ze(s)&&Mi:i!=o&&3===s.type,r&Tt.Host&&a===s);return null!==l?Yi(e,o,l,s):Oi}function Ii(t,e,n,i,r){for(var a=t.providerIndexes,o=e.data,s=1048575&a,l=t.directiveStart,u=a>>20,c=r?s+u:t.directiveEnd,d=i?s:s+u;d=l&&h.type===n)return d}if(r){var f=o[l];if(f&&Qe(f)&&f.type===n)return l}return null}function Yi(t,e,n,i){var r=t[n],a=e.data;if(r instanceof si){var o=r;if(o.resolving)throw new Error("Circular dep for ".concat(_i(a[n])));var s,l=Si(o.canSeeViewProviders);o.resolving=!0,o.injectImpl&&(s=pe(o.injectImpl)),Vn(t,i);try{r=t[n]=o.factory(void 0,a,t,i),e.firstCreatePass&&n>=i.directiveStart&&function(t,e,n){var i=e.type.prototype,r=i.ngOnInit,a=i.ngDoCheck;if(i.ngOnChanges){var o=nn(e);(n.preOrderHooks||(n.preOrderHooks=[])).push(t,o),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,o)}r&&(n.preOrderHooks||(n.preOrderHooks=[])).push(0-t,r),a&&((n.preOrderHooks||(n.preOrderHooks=[])).push(t,a),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(t,a))}(n,a[n],e)}finally{o.injectImpl&&pe(s),Si(l),o.resolving=!1,Gn()}}return r}function Fi(t){if("string"==typeof t)return t.charCodeAt(0)||0;var e=t.hasOwnProperty(oe)?t[oe]:void 0;return"number"==typeof e&&e>0?255&e:e}function Ri(t,e,n){var i=64&t,r=32&t;return!!((128&t?i?r?n[e+7]:n[e+6]:r?n[e+5]:n[e+4]:i?r?n[e+3]:n[e+2]:r?n[e+1]:n[e])&1<1?e-1:0),i=1;i";try{var e=(new window.DOMParser).parseFromString(t,"text/html").body;return e.removeChild(e.firstChild),e}catch(n){return null}}}]),t}(),ar=function(){function t(e){if(_(this,t),this.defaultDoc=e,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),null==this.inertDocument.body){var n=this.inertDocument.createElement("html");this.inertDocument.appendChild(n);var i=this.inertDocument.createElement("body");n.appendChild(i)}}return b(t,[{key:"getInertBodyElement",value:function(t){var e=this.inertDocument.createElement("template");if("content"in e)return e.innerHTML=t,e;var n=this.inertDocument.createElement("body");return n.innerHTML=t,this.defaultDoc.documentMode&&this.stripCustomNsAttrs(n),n}},{key:"stripCustomNsAttrs",value:function(t){for(var e=t.attributes,n=e.length-1;0"),!0}},{key:"endElement",value:function(t){var e=t.nodeName.toLowerCase();gr.hasOwnProperty(e)&&!hr.hasOwnProperty(e)&&(this.buf.push(""))}},{key:"chars",value:function(t){this.buf.push(Sr(t))}},{key:"checkClobberedElement",value:function(t,e){if(e&&(t.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error("Failed to sanitize html because the element is clobbered: ".concat(t.outerHTML));return e}}]),t}(),wr=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,Mr=/([^\#-~ |!])/g;function Sr(t){return t.replace(/&/g,"&").replace(wr,(function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"})).replace(Mr,(function(t){return"&#"+t.charCodeAt(0)+";"})).replace(//g,">")}function xr(t){return"content"in t&&function(t){return t.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===t.nodeName}(t)?t.content:null}var Cr=function(t){return t[t.NONE=0]="NONE",t[t.HTML=1]="HTML",t[t.STYLE=2]="STYLE",t[t.SCRIPT=3]="SCRIPT",t[t.URL=4]="URL",t[t.RESOURCE_URL=5]="RESOURCE_URL",t}({});function Dr(t){var e,n=(e=Sn())&&e[12];return n?n.sanitize(Cr.URL,t)||"":Xi(t,"URL")?Qi(t):lr(vi(t))}function Lr(t,e){t.__ngContext__=e}function Tr(t){throw new Error("Multiple components match node with tagname ".concat(t.tagName))}function Er(){throw new Error("Cannot mix multi providers and regular providers")}function Pr(t,e,n){for(var i=t.length;;){var r=t.indexOf(e,n);if(-1===r)return r;if(0===r||t.charCodeAt(r-1)<=32){var a=e.length;if(r+a===i||t.charCodeAt(r+a)<=32)return r}n=r+1}}function Or(t,e,n){for(var i=0;ia?"":r[c+1].toLowerCase();var h=8&i?d:null;if(h&&-1!==Pr(h,u,0)||2&i&&u!==d){if(Fr(i))return!1;o=!0}}}}else{if(!o&&!Fr(i)&&!Fr(l))return!1;if(o&&Fr(l))continue;o=!1,i=l|1&i}}return Fr(i)||o}function Fr(t){return 0==(1&t)}function Rr(t,e,n,i){if(null===e)return-1;var r=0;if(i||!n){for(var a=!1;r-1)for(n++;n2&&void 0!==arguments[2]&&arguments[2],i=0;i0?'="'+s+'"':"")+"]"}else 8&i?r+="."+o:4&i&&(r+=" "+o);else""===r||Fr(o)||(e+=jr(a,r),r=""),i=o,a=a||!Fr(i);n++}return""!==r&&(e+=jr(a,r)),e}var Vr={};function zr(t){var e=t[3];return Ke(e)?e[3]:e}function Wr(t){return qr(t[13])}function Ur(t){return qr(t[4])}function qr(t){for(;null!==t&&!Ke(t);)t=t[4];return t}function Gr(t){Kr(xn(),Sn(),Zn()+t,Pn())}function Kr(t,e,n,i){if(!i)if(3==(3&e[2])){var r=t.preOrderCheckHooks;null!==r&&ni(e,r,n)}else{var a=t.preOrderHooks;null!==a&&ii(e,a,0,n)}$n(n)}function Jr(t,e){return t<<17|e<<2}function Zr(t){return t>>17&32767}function $r(t){return 2|t}function Qr(t){return(131068&t)>>2}function Xr(t,e){return-131069&t|e<<2}function ta(t){return 1|t}function ea(t,e){var n=t.contentQueries;if(null!==n)for(var i=0;i20&&Kr(t,e,0,Pn()),n(i,r)}finally{$n(a)}}function ua(t,e,n){if(Je(e))for(var i=e.directiveEnd,r=e.directiveStart;r2&&void 0!==arguments[2]?arguments[2]:hn,i=e.localNames;if(null!==i)for(var r=e.index+1,a=0;a0&&function t(e){for(var n=Wr(e);null!==n;n=Ur(n))for(var i=10;i0&&t(r)}var o=e[1].components;if(null!==o)for(var s=0;s0&&t(l)}}(n)}}function Oa(t,e){var n=mn(e,t),i=n[1];!function(t,e){for(var n=e.length;n0&&(t[n-1][4]=i[4]);var a=Ce(t,10+e);Ka(i[1],i,!1,null);var o=a[19];null!==o&&o.detachView(a[1]),i[3]=null,i[4]=null,i[2]&=-129}return i}}function $a(t,e){if(!(256&e[2])){var n=e[11];ln(n)&&n.destroyNode&&uo(t,e,n,3,null,null),function(t){var e=t[13];if(!e)return Xa(t[1],t);for(;e;){var n=null;if(Ge(e))n=e[13];else{var i=e[10];i&&(n=i)}if(!n){for(;e&&!e[4]&&e!==t;)Ge(e)&&Xa(e[1],e),e=Qa(e,t);null===e&&(e=t),Ge(e)&&Xa(e[1],e),n=e&&e[4]}e=n}}(e)}}function Qa(t,e){var n;return Ge(t)&&(n=t[6])&&2===n.type?Wa(n,t):t[3]===e?null:t[3]}function Xa(t,e){if(!(256&e[2])){e[2]&=-129,e[2]|=256,function(t,e){var n;if(null!=t&&null!=(n=t.destroyHooks))for(var i=0;i=0?i[s]():i[-s].unsubscribe(),r+=2}else n[r].call(i[n[r+1]]);e[7]=null}}(t,e);var n=e[6];n&&3===n.type&&ln(e[11])&&e[11].destroy();var i=e[17];if(null!==i&&Ke(e[3])){i!==e[3]&&Ja(i,e);var r=e[19];null!==r&&r.detachView(t)}}}function to(t,e,n){for(var i=e.parent;null!=i&&(4===i.type||5===i.type);)i=(e=i).parent;if(null==i){var r=n[6];return 2===r.type?Ua(r,n):n[0]}if(e&&5===e.type&&4&e.flags)return hn(e,n).parentNode;if(2&i.flags){var a=t.data,o=a[a[i.index].directiveStart].encapsulation;if(o!==Oe.ShadowDom&&o!==Oe.Native)return null}return hn(i,n)}function eo(t,e,n,i){ln(t)?t.insertBefore(e,n,i):e.insertBefore(n,i,!0)}function no(t,e,n){ln(t)?t.appendChild(e,n):e.appendChild(n)}function io(t,e,n,i){null!==i?eo(t,e,n,i):no(t,e,n)}function ro(t,e){return ln(t)?t.parentNode(e):e.parentNode}function ao(t,e){if(2===t.type){var n=Wa(t,e);return null===n?null:so(n.indexOf(e,10)-10,n)}return 4===t.type||5===t.type?hn(t,e):null}function oo(t,e,n,i){var r=to(t,i,e);if(null!=r){var a=e[11],o=ao(i.parent||e[6],e);if(Array.isArray(n))for(var s=0;s-1&&this._viewContainerRef.detach(t),this._viewContainerRef=null}$a(this._lView[1],this._lView)}},{key:"onDestroy",value:function(t){pa(this._lView[1],this._lView,null,t)}},{key:"markForCheck",value:function(){Ia(this._cdRefInjectingView||this._lView)}},{key:"detach",value:function(){this._lView[2]&=-129}},{key:"reattach",value:function(){this._lView[2]|=128}},{key:"detectChanges",value:function(){Ya(this._lView[1],this._lView,this.context)}},{key:"checkNoChanges",value:function(){!function(t,e,n){On(!0);try{Ya(t,e,n)}finally{On(!1)}}(this._lView[1],this._lView,this.context)}},{key:"attachToViewContainerRef",value:function(t){if(this._appRef)throw new Error("This view is already attached directly to the ApplicationRef!");this._viewContainerRef=t}},{key:"detachFromAppRef",value:function(){var t;this._appRef=null,uo(this._lView[1],t=this._lView,t[11],2,null,null)}},{key:"attachToAppRef",value:function(t){if(this._viewContainerRef)throw new Error("This view is already attached to a ViewContainer!");this._appRef=t}},{key:"rootNodes",get:function(){var t=this._lView;return null==t[0]?function t(e,n,i,r){for(var a=arguments.length>4&&void 0!==arguments[4]&&arguments[4];null!==i;){var o=n[i.index];if(null!==o&&r.push(cn(o)),Ke(o))for(var s=10;s0;)this.remove(this.length-1)}},{key:"get",value:function(t){return null!==this._lContainer[8]&&this._lContainer[8][t]||null}},{key:"createEmbeddedView",value:function(t,e,n){var i=t.createEmbeddedView(e||{});return this.insert(i,n),i}},{key:"createComponent",value:function(t,e,n,i,r){var a=n||this.parentInjector;if(!r&&null==t.ngModule&&a){var o=a.get(we,null);o&&(r=o)}var s=t.create(a,i,void 0,r);return this.insert(s.hostView,e),s}},{key:"insert",value:function(t,e){var n=t._lView,i=n[1];if(t.destroyed)throw new Error("Cannot insert a destroyed View in a ViewContainer!");if(this.allocateContainerIfNeeded(),Ke(n[3])){var r=this.indexOf(t);if(-1!==r)this.detach(r);else{var a=n[3],o=new vo(a,a[6],a[3]);o.detach(o.indexOf(t))}}var s=this._adjustIndex(e);return function(t,e,n,i){var r=10+i,a=n.length;i>0&&(n[r-1][4]=e),i1&&void 0!==arguments[1]?arguments[1]:0;return null==t?this.length+e:t}},{key:"allocateContainerIfNeeded",value:function(){null===this._lContainer[8]&&(this._lContainer[8]=[])}},{key:"element",get:function(){return bo(e,this._hostTNode,this._hostView)}},{key:"injector",get:function(){return new Hi(this._hostTNode,this._hostView)}},{key:"parentInjector",get:function(){var t=Ti(this._hostTNode,this._hostView),e=gi(t,this._hostView),n=function(t,e,n){if(n.parent&&-1!==n.parent.injectorIndex){for(var i=n.parent.injectorIndex,r=n.parent;null!=r.parent&&i==r.parent.injectorIndex;)r=r.parent;return r}for(var a=mi(t),o=e,s=e[6];a>1;)s=(o=o[15])[6],a--;return s}(t,this._hostView,this._hostTNode);return fi(t)&&null!=n?new Hi(n,e):new Hi(null,this._hostView)}},{key:"length",get:function(){return this._lContainer.length-10}}]),i}(t));var a=i[n.index];if(Ke(a))r=a;else{var o;if(4===n.type)o=cn(a);else if(o=i[11].createComment(""),Xe(i)){var s=i[11],l=hn(n,i);eo(s,ro(s,l),o,function(t,e){return ln(t)?t.nextSibling(e):e.nextSibling}(s,l))}else oo(i[1],i,o,n);i[n.index]=r=Ea(a,i,o,n),Aa(i,r)}return new vo(r,n,i)}function Mo(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return So(Dn(),Sn(),t)}function So(t,e,n){if(!n&&Ze(t)){var i=mn(t.index,e);return new _o(i,i)}return 3===t.type||0===t.type||4===t.type||5===t.type?new _o(e[16],e):null}var xo=function(){var t=function t(){_(this,t)};return t.__NG_ELEMENT_ID__=function(){return Co()},t}(),Co=Mo,Do=Function,Lo=new se("Set Injector scope."),To={},Eo={},Po=[],Oo=void 0;function Ao(){return void 0===Oo&&(Oo=new be),Oo}function Io(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3?arguments[3]:void 0;return new Yo(t,n,e||Ao(),i)}var Yo=function(){function t(e,n,i){var r=this,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;_(this,t),this.parent=i,this.records=new Map,this.injectorDefTypes=new Set,this.onDestroy=new Set,this._destroyed=!1;var o=[];n&&Se(n,(function(t){return r.processProvider(t,e,n)})),Se([e],(function(t){return r.processInjectorType(t,[],o)})),this.records.set(le,No(void 0,this));var s=this.records.get(Lo);this.scope=null!=s?s.value:null,this.source=a||("object"==typeof e?null:Vt(e))}return b(t,[{key:"destroy",value:function(){this.assertNotDestroyed(),this._destroyed=!0;try{this.onDestroy.forEach((function(t){return t.ngOnDestroy()}))}finally{this.records.clear(),this.onDestroy.clear(),this.injectorDefTypes.clear()}}},{key:"get",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ue,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Tt.Default;this.assertNotDestroyed();var i=fe(this);try{if(!(n&Tt.SkipSelf)){var r=this.records.get(t);if(void 0===r){var a=Bo(t)&&It(t);r=a&&this.injectableDefInScope(a)?No(Fo(t),To):null,this.records.set(t,r)}if(null!=r)return this.hydrate(t,r)}var o=n&Tt.Self?Ao():this.parent;return o.get(t,e=n&Tt.Optional&&e===ue?null:e)}catch(l){if("NullInjectorError"===l.name){var s=l.ngTempTokenPath=l.ngTempTokenPath||[];if(s.unshift(Vt(t)),i)throw l;return ke(l,t,"R3InjectorError",this.source)}throw l}finally{fe(i)}}},{key:"_resolveInjectorDefTypes",value:function(){var t=this;this.injectorDefTypes.forEach((function(e){return t.get(e)}))}},{key:"toString",value:function(){var t=[];return this.records.forEach((function(e,n){return t.push(Vt(n))})),"R3Injector[".concat(t.join(", "),"]")}},{key:"assertNotDestroyed",value:function(){if(this._destroyed)throw new Error("Injector has already been destroyed.")}},{key:"processInjectorType",value:function(t,e,n){var i=this;if(!(t=qt(t)))return!1;var r=Ft(t),a=null==r&&t.ngModule||void 0,o=void 0===a?t:a,s=-1!==n.indexOf(o);if(void 0!==a&&(r=Ft(a)),null==r)return!1;if(null!=r.imports&&!s){var l;n.push(o);try{Se(r.imports,(function(t){i.processInjectorType(t,e,n)&&(void 0===l&&(l=[]),l.push(t))}))}finally{}if(void 0!==l)for(var u=function(t){var e=l[t],n=e.ngModule,r=e.providers;Se(r,(function(t){return i.processProvider(t,n,r||Po)}))},c=0;c0){var n=De(e,"?");throw new Error("Can't resolve all parameters for ".concat(Vt(t),": (").concat(n.join(", "),")."))}var i=function(t){var e=t&&(t[Rt]||t[jt]||t[Ht]&&t[Ht]());if(e){var n=function(t){if(t.hasOwnProperty("name"))return t.name;var e=(""+t).match(/^function\s*([^\s(]+)/);return null===e?"":e[1]}(t);return console.warn('DEPRECATED: DI is instantiating a token "'.concat(n,'" that inherits its @Injectable decorator but does not provide one itself.\n')+'This will become an error in a future version of Angular. Please add @Injectable() to the "'.concat(n,'" class.')),e}return null}(t);return null!==i?function(){return i.factory(t)}:function(){return new t}}(t);throw new Error("unreachable")}function Ro(t,e,n){var i,r=void 0;if(jo(t)){var a=qt(t);return Ue(a)||Fo(a)}if(Ho(t))r=function(){return qt(t.useValue)};else if((i=t)&&i.useFactory)r=function(){return t.useFactory.apply(t,u(ye(t.deps||[])))};else if(function(t){return!(!t||!t.useExisting)}(t))r=function(){return ge(qt(t.useExisting))};else{var o=qt(t&&(t.useClass||t.provide));if(o||function(t,e,n){var i="";if(t&&e){var r=e.map((function(t){return t==n?"?"+n+"?":"..."}));i=" - only instances of Provider and Type are allowed, got: [".concat(r.join(", "),"]")}throw new Error("Invalid provider for the NgModule '".concat(Vt(t),"'")+i)}(e,n,t),!function(t){return!!t.deps}(t))return Ue(o)||Fo(o);r=function(){return k(o,u(ye(t.deps)))}}return r}function No(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return{factory:t,value:e,multi:n?[]:void 0}}function Ho(t){return null!==t&&"object"==typeof t&&de in t}function jo(t){return"function"==typeof t}function Bo(t){return"function"==typeof t||"object"==typeof t&&t instanceof se}var Vo=function(t,e,n){return function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=arguments.length>3?arguments[3]:void 0,r=Io(t,e,n,i);return r._resolveInjectorDefTypes(),r}({name:n},e,t,n)},zo=function(){var t=function(){function t(){_(this,t)}return b(t,null,[{key:"create",value:function(t,e){return Array.isArray(t)?Vo(t,e,""):Vo(t.providers,t.parent,t.name||"")}}]),t}();return t.THROW_IF_NOT_FOUND=ue,t.NULL=new be,t.\u0275prov=Ot({token:t,providedIn:"any",factory:function(){return ge(le)}}),t.__NG_ELEMENT_ID__=-1,t}(),Wo=new se("AnalyzeForEntryComponents");function Uo(t,e,n){var i=n?t.styles:null,r=n?t.classes:null,a=0;if(null!==e)for(var o=0;o1&&void 0!==arguments[1]?arguments[1]:Tt.Default,n=Sn();if(null==n)return ge(t,e);var i=Dn();return Pi(i,n,qt(t),e)}function as(t){return function(t,e){if("class"===e)return t.classes;if("style"===e)return t.styles;var n=t.attrs;if(n)for(var i=n.length,r=0;r2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3?arguments[3]:void 0,r=Sn(),a=xn(),o=Dn();return bs(a,r,r[11],o,t,e,n,i),vs}function _s(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3?arguments[3]:void 0,r=Dn(),a=Sn(),o=xn(),s=Hn(o.data),l=ja(s,r,a);return bs(o,a,l,r,t,e,n,i),_s}function ys(t,e,n,i){var r=t.cleanup;if(null!=r)for(var a=0;al?s[l]:null}"string"==typeof o&&(a+=2)}return null}function bs(t,e,n,i,r,a){var o=arguments.length>6&&void 0!==arguments[6]&&arguments[6],s=arguments.length>7?arguments[7]:void 0,l=$e(i),u=t.firstCreatePass,c=u&&(t.cleanup||(t.cleanup=[])),d=Ha(e),h=!0;if(3===i.type){var f=hn(i,e),p=s?s(f):Ae,m=p.target||f,g=d.length,v=s?function(t){return s(cn(t[i.index])).target}:i.index;if(ln(n)){var _=null;if(!s&&l&&(_=ys(t,e,r,i.index)),null!==_){var y=_.__ngLastListenerFn__||_;y.__ngNextListenerFn__=a,_.__ngLastListenerFn__=a,h=!1}else{a=ws(i,e,a,!1);var b=n.listen(p.name||m,r,a);d.push(a,b),c&&c.push(r,v,g,g+1)}}else a=ws(i,e,a,!0),m.addEventListener(r,a,o),d.push(a),c&&c.push(r,v,g,o)}var k,w=i.outputs;if(h&&null!==w&&(k=w[r])){var M=k.length;if(M)for(var S=0;S0&&void 0!==arguments[0]?arguments[0]:1;return Jn(t)}function Ss(t,e){for(var n=null,i=function(t){var e=t.attrs;if(null!=e){var n=e.indexOf(5);if(0==(1&n))return e[n+1]}return null}(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,i=Sn(),r=xn(),a=ra(r,i[6],t,1,null,n||null);null===a.projection&&(a.projection=e),En(),co(r,i,a)}function Ds(t,e,n){return Ls(t,"",e,"",n),Ds}function Ls(t,e,n,i,r){var a=Sn(),o=es(a,e,n,i);return o!==Vr&&va(xn(),Qn(),a,t,o,a[11],r,!1),Ls}var Ts=[];function Es(t,e,n,i,r){for(var a=t[n+1],o=null===e,s=i?Zr(a):Qr(a),l=!1;0!==s&&(!1===l||o);){var u=t[s+1];Ps(t[s],e)&&(l=!0,t[s+1]=i?ta(u):$r(u)),s=i?Zr(u):Qr(u)}l&&(t[n+1]=i?$r(a):ta(a))}function Ps(t,e){return null===t||null==e||(Array.isArray(t)?t[1]:t)===e||!(!Array.isArray(t)||"string"!=typeof e)&&Ee(t,e)>=0}var Os={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function As(t){return t.substring(Os.key,Os.keyEnd)}function Is(t){return t.substring(Os.value,Os.valueEnd)}function Ys(t,e){var n=Os.textEnd;return n===e?-1:(e=Os.keyEnd=function(t,e,n){for(;e32;)e++;return e}(t,Os.key=e,n),Ns(t,e,n))}function Fs(t,e){var n=Os.textEnd,i=Os.key=Ns(t,e,n);return n===i?-1:(i=Os.keyEnd=function(t,e,n){for(var i;e=65&&(-33&i)<=90);)e++;return e}(t,i,n),i=Hs(t,i,n),i=Os.value=Ns(t,i,n),i=Os.valueEnd=function(t,e,n){for(var i=-1,r=-1,a=-1,o=e,s=o;o32&&(s=o),a=r,r=i,i=-33&l}return s}(t,i,n),Hs(t,i,n))}function Rs(t){Os.key=0,Os.keyEnd=0,Os.value=0,Os.valueEnd=0,Os.textEnd=t.length}function Ns(t,e,n){for(;e=0;n=Fs(e,n))Xs(t,As(e),Is(e))}function Us(t){Ks(Le,qs,t,!0)}function qs(t,e){for(var n=function(t){return Rs(t),Ys(t,Ns(t,0,Os.textEnd))}(e);n>=0;n=Ys(e,n))Le(t,As(e),!0)}function Gs(t,e,n,i){var r=Sn(),a=xn(),o=Fn(2);a.firstUpdatePass&&Zs(a,t,o,i),e!==Vr&&Qo(r,o,e)&&tl(a,a.data[Zn()+20],r,r[11],t,r[o+1]=function(t,e){return null==t||("string"==typeof e?t+=e:"object"==typeof t&&(t=Vt(Qi(t)))),t}(e,n),i,o)}function Ks(t,e,n,i){var r=xn(),a=Fn(2);r.firstUpdatePass&&Zs(r,null,a,i);var o=Sn();if(n!==Vr&&Qo(o,a,n)){var s=r.data[Zn()+20];if(il(s,i)&&!Js(r,a)){var l=i?s.classesWithoutHost:s.stylesWithoutHost;null!==l&&(n=zt(l,n||"")),ss(r,s,o,n,i)}else!function(t,e,n,i,r,a,o,s){r===Vr&&(r=Ts);for(var l=0,u=0,c=0=t.expandoStartIndex}function Zs(t,e,n,i){var r=t.data;if(null===r[n+1]){var a=r[Zn()+20],o=Js(t,n);il(a,i)&&null===e&&!o&&(e=!1),e=function(t,e,n,i){var r=Hn(t),a=i?e.residualClasses:e.residualStyles;if(null===r)0===(i?e.classBindings:e.styleBindings)&&(n=Qs(n=$s(null,t,e,n,i),e.attrs,i),a=null);else{var o=e.directiveStylingLast;if(-1===o||t[o]!==r)if(n=$s(r,t,e,n,i),null===a){var s=function(t,e,n){var i=n?e.classBindings:e.styleBindings;if(0!==Qr(i))return t[Zr(i)]}(t,e,i);void 0!==s&&Array.isArray(s)&&function(t,e,n,i){t[Zr(n?e.classBindings:e.styleBindings)]=i}(t,e,i,s=Qs(s=$s(null,t,e,s[1],i),e.attrs,i))}else a=function(t,e,n){for(var i=void 0,r=e.directiveEnd,a=1+e.directiveStylingLast;a0)&&(c=!0):u=n,r)if(0!==l){var d=Zr(t[s+1]);t[i+1]=Jr(d,s),0!==d&&(t[d+1]=Xr(t[d+1],i)),t[s+1]=131071&t[s+1]|i<<17}else t[i+1]=Jr(s,0),0!==s&&(t[s+1]=Xr(t[s+1],i)),s=i;else t[i+1]=Jr(l,0),0===s?s=i:t[l+1]=Xr(t[l+1],i),l=i;c&&(t[i+1]=$r(t[i+1])),Es(t,u,i,!0),Es(t,u,i,!1),function(t,e,n,i,r){var a=r?t.residualClasses:t.residualStyles;null!=a&&"string"==typeof e&&Ee(a,e)>=0&&(n[i+1]=ta(n[i+1]))}(e,u,t,i,a),o=Jr(s,l),a?e.classBindings=o:e.styleBindings=o}(r,a,e,n,o,i)}}function $s(t,e,n,i,r){var a=null,o=n.directiveEnd,s=n.directiveStylingLast;for(-1===s?s=n.directiveStart:s++;s0;){var l=t[r],u=Array.isArray(l),c=u?l[1]:l,d=null===c,h=n[r+1];h===Vr&&(h=d?Ts:void 0);var f=d?Te(h,i):c===i?h:void 0;if(u&&!nl(f)&&(f=Te(l,i)),nl(f)&&(s=f,o))return s;var p=t[r+1];r=o?Zr(p):Qr(p)}if(null!==e){var m=a?e.residualClasses:e.residualStyles;null!=m&&(s=Te(m,i))}return s}function nl(t){return void 0!==t}function il(t,e){return 0!=(t.flags&(e?16:32))}function rl(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=Sn(),i=xn(),r=t+20,a=i.firstCreatePass?ra(i,n[6],t,3,null,null):i.data[r],o=n[r]=Ga(e,n[11]);oo(i,n,o,a),Ln(a,!1)}function al(t){return ol("",t,""),al}function ol(t,e,n){var i=Sn(),r=es(i,t,e,n);return r!==Vr&&za(i,Zn(),r),ol}function sl(t,e,n,i,r){var a=Sn(),o=function(t,e,n,i,r,a){var o=Xo(t,In(),n,r);return Fn(2),o?e+vi(n)+i+vi(r)+a:Vr}(a,t,e,n,i,r);return o!==Vr&&za(a,Zn(),o),sl}function ll(t,e,n,i,r,a,o){var s=Sn(),l=function(t,e,n,i,r,a,o,s){var l=function(t,e,n,i,r){var a=Xo(t,e,n,i);return Qo(t,e+2,r)||a}(t,In(),n,r,o);return Fn(3),l?e+vi(n)+i+vi(r)+a+vi(o)+s:Vr}(s,t,e,n,i,r,a,o);return l!==Vr&&za(s,Zn(),l),ll}function ul(t,e,n,i,r,a,o,s,l){var u=Sn(),c=function(t,e,n,i,r,a,o,s,l,u){var c=function(t,e,n,i,r,a){var o=Xo(t,e,n,i);return Xo(t,e+2,r,a)||o}(t,In(),n,r,o,l);return Fn(4),c?e+vi(n)+i+vi(r)+a+vi(o)+s+vi(l)+u:Vr}(u,t,e,n,i,r,a,o,s,l);return c!==Vr&&za(u,Zn(),c),ul}function cl(t,e,n){var i=Sn();return Qo(i,Yn(),e)&&va(xn(),Qn(),i,t,e,i[11],n,!0),cl}function dl(t,e,n){var i=Sn();if(Qo(i,Yn(),e)){var r=xn(),a=Qn();va(r,a,i,t,e,ja(Hn(r.data),a,i),n,!0)}return dl}function hl(t,e){var n=gn(t)[1],i=n.data.length-1;ei(n,{directiveStart:i,directiveEnd:i+1})}function fl(t){for(var e=Object.getPrototypeOf(t.type.prototype).constructor,n=!0,i=[t];e;){var r=void 0;if(Qe(t))r=e.\u0275cmp||e.\u0275dir;else{if(e.\u0275cmp)throw new Error("Directives cannot inherit Components");r=e.\u0275dir}if(r){if(n){i.push(r);var a=t;a.inputs=pl(t.inputs),a.declaredInputs=pl(t.declaredInputs),a.outputs=pl(t.outputs);var o=r.hostBindings;o&&vl(t,o);var s=r.viewQuery,l=r.contentQueries;if(s&&ml(t,s),l&&gl(t,l),Pt(t.inputs,r.inputs),Pt(t.declaredInputs,r.declaredInputs),Pt(t.outputs,r.outputs),Qe(r)&&r.data.animation){var u=t.data;u.animation=(u.animation||[]).concat(r.data.animation)}}var c=r.features;if(c)for(var d=0;d=0;i--){var r=t[i];r.hostVars=e+=r.hostVars,r.hostAttrs=di(r.hostAttrs,n=di(n,r.hostAttrs))}}(i)}function pl(t){return t===Ae?{}:t===Ie?[]:t}function ml(t,e){var n=t.viewQuery;t.viewQuery=n?function(t,i){e(t,i),n(t,i)}:e}function gl(t,e){var n=t.contentQueries;t.contentQueries=n?function(t,i,r){e(t,i,r),n(t,i,r)}:e}function vl(t,e){var n=t.hostBindings;t.hostBindings=n?function(t,i){e(t,i),n(t,i)}:e}function _l(t,e,n){var i=xn();if(i.firstCreatePass){var r=Qe(t);yl(n,i.data,i.blueprint,r,!0),yl(e,i.data,i.blueprint,r,!1)}}function yl(t,e,n,i,r){if(t=qt(t),Array.isArray(t))for(var a=0;a>20;if(jo(t)||!t.multi){var p=new si(u,r,rs),m=wl(l,e,r?d:d+f,h);-1===m?(Ei(Ci(c,s),o,l),bl(o,t,e.length),e.push(l),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=1048576),n.push(p),s.push(p)):(n[m]=p,s[m]=p)}else{var g=wl(l,e,d+f,h),v=wl(l,e,d,d+f),_=v>=0&&n[v];if(r&&!_||!r&&!(g>=0&&n[g])){Ei(Ci(c,s),o,l);var y=function(t,e,n,i,r){var a=new si(t,n,rs);return a.multi=[],a.index=e,a.componentProviders=0,kl(a,r,i&&!n),a}(r?Sl:Ml,n.length,r,i,u);!r&&_&&(n[v].providerFactory=y),bl(o,t,e.length,0),e.push(l),c.directiveStart++,c.directiveEnd++,r&&(c.providerIndexes+=1048576),n.push(y),s.push(y)}else bl(o,t,g>-1?g:v,kl(n[r?v:g],u,!r&&i));!r&&i&&_&&n[v].componentProviders++}}}function bl(t,e,n,i){var r=jo(e);if(r||e.useClass){var a=(e.useClass||e).prototype.ngOnDestroy;if(a){var o=t.destroyHooks||(t.destroyHooks=[]);if(!r&&e.multi){var s=o.indexOf(n);-1===s?o.push(n,[i,a]):o[s+1].push(i,a)}else o.push(n,a)}}}function kl(t,e,n){return n&&t.componentProviders++,t.multi.push(e)-1}function wl(t,e,n,i){for(var r=n;r1&&void 0!==arguments[1]?arguments[1]:[];return function(n){n.providersResolver=function(n,i){return _l(n,i?i(t):t,e)}}}var Dl=function t(){_(this,t)},Ll=function t(){_(this,t)},Tl=function(){function t(){_(this,t)}return b(t,[{key:"resolveComponentFactory",value:function(t){throw function(t){var e=Error("No component factory found for ".concat(Vt(t),". Did you add it to @NgModule.entryComponents?"));return e.ngComponent=t,e}(t)}}]),t}(),El=function(){var t=function t(){_(this,t)};return t.NULL=new Tl,t}(),Pl=function(){var t=function t(e){_(this,t),this.nativeElement=e};return t.__NG_ELEMENT_ID__=function(){return Ol(t)},t}(),Ol=function(t){return bo(t,Dn(),Sn())},Al=function t(){_(this,t)},Il=function(t){return t[t.Important=1]="Important",t[t.DashCase=2]="DashCase",t}({}),Yl=function(){var t=function t(){_(this,t)};return t.__NG_ELEMENT_ID__=function(){return Fl()},t}(),Fl=function(){var t=Sn(),e=mn(Dn().index,t);return function(t){var e=t[11];if(ln(e))return e;throw new Error("Cannot inject Renderer2 when the application uses Renderer3!")}(Ge(e)?e:t)},Rl=function(){var t=function t(){_(this,t)};return t.\u0275prov=Ot({token:t,providedIn:"root",factory:function(){return null}}),t}(),Nl=function t(e){_(this,t),this.full=e,this.major=e.split(".")[0],this.minor=e.split(".")[1],this.patch=e.split(".").slice(2).join(".")},Hl=new Nl("10.0.7"),jl=function(){function t(){_(this,t)}return b(t,[{key:"supports",value:function(t){return Jo(t)}},{key:"create",value:function(t){return new Vl(t)}}]),t}(),Bl=function(t,e){return e},Vl=function(){function t(e){_(this,t),this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=e||Bl}return b(t,[{key:"forEachItem",value:function(t){var e;for(e=this._itHead;null!==e;e=e._next)t(e)}},{key:"forEachOperation",value:function(t){for(var e=this._itHead,n=this._removalsHead,i=0,r=null;e||n;){var a=!n||e&&e.currentIndex0&&po(u,d,y.join(" "))}if(a=fn(p,0),void 0!==e)for(var b=a.projection=[],k=0;k ".concat(null," ").concat("!="," ").concat(e," <=Actual]"))}(n,e),"string"==typeof t&&t.toLowerCase().replace(/_/g,"-")}var _u=new Map,yu=function(t){f(n,t);var e=v(n);function n(t,i){var r;_(this,n),(r=e.call(this))._parent=i,r._bootstrapComponents=[],r.injector=a(r),r.destroyCbs=[],r.componentFactoryResolver=new ou(a(r));var o=qe(t),s=t[re]||null;return s&&vu(s),r._bootstrapComponents=wi(o.bootstrap),r._r3Injector=Io(t,i,[{provide:we,useValue:a(r)},{provide:El,useValue:r.componentFactoryResolver}],Vt(t)),r._r3Injector._resolveInjectorDefTypes(),r.instance=r.get(t),r}return b(n,[{key:"get",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:zo.THROW_IF_NOT_FOUND,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Tt.Default;return t===zo||t===we||t===le?this:this._r3Injector.get(t,e,n)}},{key:"destroy",value:function(){var t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach((function(t){return t()})),this.destroyCbs=null}},{key:"onDestroy",value:function(t){this.destroyCbs.push(t)}}]),n}(we),bu=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this)).moduleType=t,null!==qe(t)&&function t(e){if(null!==e.\u0275mod.id){var n=e.\u0275mod.id;(function(t,e,n){if(e&&e!==n)throw new Error("Duplicate module registered for ".concat(t," - ").concat(Vt(e)," vs ").concat(Vt(e.name)))})(n,_u.get(n),e),_u.set(n,e)}var i=e.\u0275mod.imports;i instanceof Function&&(i=i()),i&&i.forEach((function(e){return t(e)}))}(t),i}return b(n,[{key:"create",value:function(t){return new yu(this.moduleType,t)}}]),n}(Me);function ku(t,e,n){var i=An()+t,r=Sn();return r[i]===Vr?$o(r,i,n?e.call(n):e()):function(t,e){return t[e]}(r,i)}function wu(t,e,n,i){return xu(Sn(),An(),t,e,n,i)}function Mu(t,e,n,i,r){return Cu(Sn(),An(),t,e,n,i,r)}function Su(t,e){var n=t[e];return n===Vr?void 0:n}function xu(t,e,n,i,r,a){var o=e+n;return Qo(t,o,r)?$o(t,o+1,a?i.call(a,r):i(r)):Su(t,o+1)}function Cu(t,e,n,i,r,a,o){var s=e+n;return Xo(t,s,r,a)?$o(t,s+2,o?i.call(o,r,a):i(r,a)):Su(t,s+2)}function Du(t,e){var n,i=xn(),r=t+20;i.firstCreatePass?(n=function(t,e){if(e)for(var n=e.length-1;n>=0;n--){var i=e[n];if(t===i.name)return i}throw new Error("The pipe '".concat(t,"' could not be found!"))}(e,i.pipeRegistry),i.data[r]=n,n.onDestroy&&(i.destroyHooks||(i.destroyHooks=[])).push(r,n.onDestroy)):n=i.data[r];var a=n.factory||(n.factory=Ue(n.type)),o=pe(rs),s=Si(!1),l=a();return Si(s),pe(o),function(t,e,n,i){var r=n+20;r>=t.data.length&&(t.data[r]=null,t.blueprint[r]=null),e[r]=i}(i,Sn(),t,l),l}function Lu(t,e,n){var i=Sn(),r=pn(i,t);return Pu(i,Eu(i,t)?xu(i,An(),e,r.transform,n,r):r.transform(n))}function Tu(t,e,n,i){var r=Sn(),a=pn(r,t);return Pu(r,Eu(r,t)?Cu(r,An(),e,a.transform,n,i,a):a.transform(n,i))}function Eu(t,e){return t[1].data[e+20].pure}function Pu(t,e){return Ko.isWrapped(e)&&(e=Ko.unwrap(e),t[In()]=Vr),e}var Ou=function(t){f(n,t);var e=v(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return _(this,n),(t=e.call(this)).__isAsync=i,t}return b(n,[{key:"emit",value:function(t){r(i(n.prototype),"next",this).call(this,t)}},{key:"subscribe",value:function(t,e,a){var o,s=function(t){return null},l=function(){return null};t&&"object"==typeof t?(o=this.__isAsync?function(e){setTimeout((function(){return t.next(e)}))}:function(e){t.next(e)},t.error&&(s=this.__isAsync?function(e){setTimeout((function(){return t.error(e)}))}:function(e){t.error(e)}),t.complete&&(l=this.__isAsync?function(){setTimeout((function(){return t.complete()}))}:function(){t.complete()})):(o=this.__isAsync?function(e){setTimeout((function(){return t(e)}))}:function(e){t(e)},e&&(s=this.__isAsync?function(t){setTimeout((function(){return e(t)}))}:function(t){e(t)}),a&&(l=this.__isAsync?function(){setTimeout((function(){return a()}))}:function(){a()}));var u=r(i(n.prototype),"subscribe",this).call(this,o,s,l);return t instanceof C&&t.add(u),u}}]),n}(W);function Au(){return this._results[Go()]()}var Iu=function(){function t(){_(this,t),this.dirty=!0,this._results=[],this.changes=new Ou,this.length=0;var e=Go(),n=t.prototype;n[e]||(n[e]=Au)}return b(t,[{key:"map",value:function(t){return this._results.map(t)}},{key:"filter",value:function(t){return this._results.filter(t)}},{key:"find",value:function(t){return this._results.find(t)}},{key:"reduce",value:function(t,e){return this._results.reduce(t,e)}},{key:"forEach",value:function(t){this._results.forEach(t)}},{key:"some",value:function(t){return this._results.some(t)}},{key:"toArray",value:function(){return this._results.slice()}},{key:"toString",value:function(){return this._results.toString()}},{key:"reset",value:function(t){this._results=function t(e,n){void 0===n&&(n=e);for(var i=0;i0&&void 0!==arguments[0]?arguments[0]:[];_(this,t),this.queries=e}return b(t,[{key:"createEmbeddedView",value:function(e){var n=e.queries;if(null!==n){for(var i=null!==e.contentQueries?e.contentQueries[0]:n.length,r=[],a=0;a3&&void 0!==arguments[3]?arguments[3]:null;_(this,t),this.predicate=e,this.descendants=n,this.isStatic=i,this.read=r},Nu=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];_(this,t),this.queries=e}return b(t,[{key:"elementStart",value:function(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:-1;_(this,t),this.metadata=e,this.matches=null,this.indexInDeclarationView=-1,this.crossesNgTemplate=!1,this._appliesToNextNode=!0,this._declarationNodeIndex=n}return b(t,[{key:"elementStart",value:function(t,e){this.isApplyingToNode(e)&&this.matchTNode(t,e)}},{key:"elementEnd",value:function(t){this._declarationNodeIndex===t.index&&(this._appliesToNextNode=!1)}},{key:"template",value:function(t,e){this.elementStart(t,e)}},{key:"embeddedTView",value:function(e,n){return this.isApplyingToNode(e)?(this.crossesNgTemplate=!0,this.addMatch(-e.index,n),new t(this.metadata)):null}},{key:"isApplyingToNode",value:function(t){if(this._appliesToNextNode&&!1===this.metadata.descendants){for(var e=this._declarationNodeIndex,n=t.parent;null!==n&&4===n.type&&n.index!==e;)n=n.parent;return e===(null!==n?n.index:-1)}return this._appliesToNextNode}},{key:"matchTNode",value:function(t,e){if(Array.isArray(this.metadata.predicate))for(var n=this.metadata.predicate,i=0;i0)r.push(s[l/2]);else{for(var c=o[l+1],d=n[-u],h=10;h0&&void 0!==arguments[0]?arguments[0]:Tt.Default,e=Mo(!0);if(null!=e||t&Tt.Optional)return e;throw new Error("No provider for ChangeDetectorRef!")}var nc=new se("Application Initializer"),ic=function(){var t=function(){function t(e){var n=this;_(this,t),this.appInits=e,this.initialized=!1,this.done=!1,this.donePromise=new Promise((function(t,e){n.resolve=t,n.reject=e}))}return b(t,[{key:"runInitializers",value:function(){var t=this;if(!this.initialized){var e=[],n=function(){t.done=!0,t.resolve()};if(this.appInits)for(var i=0;i0&&(r=setTimeout((function(){i._callbacks=i._callbacks.filter((function(t){return t.timeoutId!==r})),t(i._didWork,i.getPendingTasks())}),e)),this._callbacks.push({doneCb:t,timeoutId:r,updateCb:n})}},{key:"whenStable",value:function(t,e,n){if(n&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/dist/task-tracking.js" loaded?');this.addCallback(t,e,n),this._runCallbacksIfReady()}},{key:"getPendingRequestCount",value:function(){return this._pendingCount}},{key:"findProviders",value:function(t,e,n){return[]}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Mc))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Ac=function(){var t=function(){function t(){_(this,t),this._applications=new Map,Ic.addToWindow(this)}return b(t,[{key:"registerApplication",value:function(t,e){this._applications.set(t,e)}},{key:"unregisterApplication",value:function(t){this._applications.delete(t)}},{key:"unregisterAllApplications",value:function(){this._applications.clear()}},{key:"getTestability",value:function(t){return this._applications.get(t)||null}},{key:"getAllTestabilities",value:function(){return Array.from(this._applications.values())}},{key:"getAllRootElements",value:function(){return Array.from(this._applications.keys())}},{key:"findTestabilityInTree",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return Ic.findTestabilityInTree(this,t,e)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Ic=new(function(){function t(){_(this,t)}return b(t,[{key:"addToWindow",value:function(t){}},{key:"findTestabilityInTree",value:function(t,e,n){return null}}]),t}()),Yc=function(t,e,n){var i=new bu(n);return Promise.resolve(i)},Fc=new se("AllowMultipleToken"),Rc=function t(e,n){_(this,t),this.name=e,this.token=n};function Nc(t){if(Ec&&!Ec.destroyed&&!Ec.injector.get(Fc,!1))throw new Error("There can be only one platform. Destroy the previous one to create a new one.");Ec=t.get(Vc);var e=t.get(sc,null);return e&&e.forEach((function(t){return t()})),Ec}function Hc(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],i="Platform: ".concat(e),r=new se(i);return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],a=Bc();if(!a||a.injector.get(Fc,!1))if(t)t(n.concat(e).concat({provide:r,useValue:!0}));else{var o=n.concat(e).concat({provide:r,useValue:!0},{provide:Lo,useValue:"platform"});Nc(zo.create({providers:o,name:i}))}return jc(r)}}function jc(t){var e=Bc();if(!e)throw new Error("No platform exists!");if(!e.injector.get(t,null))throw new Error("A platform with a different configuration has been created. Please destroy it first.");return e}function Bc(){return Ec&&!Ec.destroyed?Ec:null}var Vc=function(){var t=function(){function t(e){_(this,t),this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}return b(t,[{key:"bootstrapModuleFactory",value:function(t,e){var n,i,r=this,a=(i=e&&e.ngZoneEventCoalescing||!1,"noop"===(n=e?e.ngZone:void 0)?new Pc:("zone.js"===n?void 0:n)||new Mc({enableLongStackTrace:ir(),shouldCoalesceEventChangeDetection:i})),o=[{provide:Mc,useValue:a}];return a.run((function(){var e=zo.create({providers:o,parent:r.injector,name:t.moduleType.name}),n=t.create(e),i=n.injector.get(Ui,null);if(!i)throw new Error("No ErrorHandler. Is platform module (BrowserModule) included?");return n.onDestroy((function(){return Uc(r._modules,n)})),a.runOutsideAngular((function(){return a.onError.subscribe({next:function(t){i.handleError(t)}})})),function(t,e,i){try{var a=((o=n.injector.get(ic)).runInitializers(),o.donePromise.then((function(){return vu(n.injector.get(dc,"en-US")||"en-US"),r._moduleDoBootstrap(n),n})));return ms(a)?a.catch((function(n){throw e.runOutsideAngular((function(){return t.handleError(n)})),n})):a}catch(s){throw e.runOutsideAngular((function(){return t.handleError(s)})),s}var o}(i,a)}))}},{key:"bootstrapModule",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=zc({},n);return Yc(0,0,t).then((function(t){return e.bootstrapModuleFactory(t,i)}))}},{key:"_moduleDoBootstrap",value:function(t){var e=t.injector.get(Wc);if(t._bootstrapComponents.length>0)t._bootstrapComponents.forEach((function(t){return e.bootstrap(t)}));else{if(!t.instance.ngDoBootstrap)throw new Error("The module ".concat(Vt(t.instance.constructor),' was bootstrapped, but it does not declare "@NgModule.bootstrap" components nor a "ngDoBootstrap" method. ')+"Please define one of these.");t.instance.ngDoBootstrap(e)}this._modules.push(t)}},{key:"onDestroy",value:function(t){this._destroyListeners.push(t)}},{key:"destroy",value:function(){if(this._destroyed)throw new Error("The platform has already been destroyed!");this._modules.slice().forEach((function(t){return t.destroy()})),this._destroyListeners.forEach((function(t){return t()})),this._destroyed=!0}},{key:"injector",get:function(){return this._injector}},{key:"destroyed",get:function(){return this._destroyed}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(zo))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}();function zc(t,e){return Array.isArray(e)?e.reduce(zc,t):Object.assign(Object.assign({},t),e)}var Wc=function(){var t=function(){function t(e,n,i,r,a,o){var s=this;_(this,t),this._zone=e,this._console=n,this._injector=i,this._exceptionHandler=r,this._componentFactoryResolver=a,this._initStatus=o,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._enforceNoNewChanges=!1,this._stable=!0,this.componentTypes=[],this.components=[],this._enforceNoNewChanges=ir(),this._zone.onMicrotaskEmpty.subscribe({next:function(){s._zone.run((function(){s.tick()}))}});var l=new H((function(t){s._stable=s._zone.isStable&&!s._zone.hasPendingMacrotasks&&!s._zone.hasPendingMicrotasks,s._zone.runOutsideAngular((function(){t.next(s._stable),t.complete()}))})),u=new H((function(t){var e;s._zone.runOutsideAngular((function(){e=s._zone.onStable.subscribe((function(){Mc.assertNotInAngularZone(),wc((function(){s._stable||s._zone.hasPendingMacrotasks||s._zone.hasPendingMicrotasks||(s._stable=!0,t.next(!0))}))}))}));var n=s._zone.onUnstable.subscribe((function(){Mc.assertInAngularZone(),s._stable&&(s._stable=!1,s._zone.runOutsideAngular((function(){t.next(!1)})))}));return function(){e.unsubscribe(),n.unsubscribe()}}));this.isStable=ft(l,u.pipe(kt()))}return b(t,[{key:"bootstrap",value:function(t,e){var n,i=this;if(!this._initStatus.done)throw new Error("Cannot bootstrap as there are still asynchronous initializers running. Bootstrap components in the `ngDoBootstrap` method of the root module.");n=t instanceof Ll?t:this._componentFactoryResolver.resolveComponentFactory(t),this.componentTypes.push(n.componentType);var r=n.isBoundToModule?void 0:this._injector.get(we),a=n.create(zo.NULL,[],e||n.selector,r);a.onDestroy((function(){i._unloadComponent(a)}));var o=a.injector.get(Oc,null);return o&&a.injector.get(Ac).registerApplication(a.location.nativeElement,o),this._loadComponent(a),ir()&&this._console.log("Angular is running in development mode. Call enableProdMode() to enable production mode."),a}},{key:"tick",value:function(){var t=this;if(this._runningTick)throw new Error("ApplicationRef.tick is called recursively");try{this._runningTick=!0;var e,n=d(this._views);try{for(n.s();!(e=n.n()).done;)e.value.detectChanges()}catch(a){n.e(a)}finally{n.f()}if(this._enforceNoNewChanges){var i,r=d(this._views);try{for(r.s();!(i=r.n()).done;)i.value.checkNoChanges()}catch(a){r.e(a)}finally{r.f()}}}catch(o){this._zone.runOutsideAngular((function(){return t._exceptionHandler.handleError(o)}))}finally{this._runningTick=!1}}},{key:"attachView",value:function(t){var e=t;this._views.push(e),e.attachToAppRef(this)}},{key:"detachView",value:function(t){var e=t;Uc(this._views,e),e.detachFromAppRef()}},{key:"_loadComponent",value:function(t){this.attachView(t.hostView),this.tick(),this.components.push(t),this._injector.get(uc,[]).concat(this._bootstrapListeners).forEach((function(e){return e(t)}))}},{key:"_unloadComponent",value:function(t){this.detachView(t.hostView),Uc(this.components,t)}},{key:"ngOnDestroy",value:function(){this._views.slice().forEach((function(t){return t.destroy()}))}},{key:"viewCount",get:function(){return this._views.length}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Mc),ge(cc),ge(zo),ge(Ui),ge(El),ge(ic))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}();function Uc(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}var qc=function t(){_(this,t)},Gc=function t(){_(this,t)},Kc={factoryPathPrefix:"",factoryPathSuffix:".ngfactory"},Jc=function(){var t=function(){function t(e,n){_(this,t),this._compiler=e,this._config=n||Kc}return b(t,[{key:"load",value:function(t){return this.loadAndCompile(t)}},{key:"loadAndCompile",value:function(t){var e=this,i=l(t.split("#"),2),r=i[0],a=i[1];return void 0===a&&(a="default"),n("crnd")(r).then((function(t){return t[a]})).then((function(t){return Zc(t,r,a)})).then((function(t){return e._compiler.compileModuleAsync(t)}))}},{key:"loadFactory",value:function(t){var e=l(t.split("#"),2),i=e[0],r=e[1],a="NgFactory";return void 0===r&&(r="default",a=""),n("crnd")(this._config.factoryPathPrefix+i+this._config.factoryPathSuffix).then((function(t){return t[r+a]})).then((function(t){return Zc(t,i,r)}))}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(bc),ge(Gc,8))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}();function Zc(t,e,n){if(!t)throw new Error("Cannot find '".concat(n,"' in '").concat(e,"'"));return t}var $c=Hc(null,"core",[{provide:lc,useValue:"unknown"},{provide:Vc,deps:[zo]},{provide:Ac,deps:[]},{provide:cc,deps:[]}]),Qc=[{provide:Wc,useClass:Wc,deps:[Mc,cc,zo,Ui,El,ic]},{provide:lu,deps:[Mc],useFactory:function(t){var e=[];return t.onStable.subscribe((function(){for(;e.length;)e.pop()()})),function(t){e.push(t)}}},{provide:ic,useClass:ic,deps:[[new Ct,nc]]},{provide:bc,useClass:bc,deps:[]},ac,{provide:Zl,useFactory:function(){return Xl},deps:[]},{provide:$l,useFactory:function(){return tu},deps:[]},{provide:dc,useFactory:function(t){return vu(t=t||"undefined"!=typeof $localize&&$localize.locale||"en-US"),t},deps:[[new xt(dc),new Ct,new Lt]]},{provide:hc,useValue:"USD"}],Xc=function(){var t=function t(e){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)(ge(Wc))},providers:Qc}),t}(),td=null;function ed(){return td}var nd=function t(){_(this,t)},id=new se("DocumentToken"),rd=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({factory:ad,token:t,providedIn:"platform"}),t}();function ad(){return ge(sd)}var od=new se("Location Initialized"),sd=function(){var t=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this))._doc=t,i._init(),i}return b(n,[{key:"_init",value:function(){this.location=ed().getLocation(),this._history=ed().getHistory()}},{key:"getBaseHrefFromDOM",value:function(){return ed().getBaseHref(this._doc)}},{key:"onPopState",value:function(t){ed().getGlobalEventTarget(this._doc,"window").addEventListener("popstate",t,!1)}},{key:"onHashChange",value:function(t){ed().getGlobalEventTarget(this._doc,"window").addEventListener("hashchange",t,!1)}},{key:"pushState",value:function(t,e,n){ld()?this._history.pushState(t,e,n):this.location.hash=n}},{key:"replaceState",value:function(t,e,n){ld()?this._history.replaceState(t,e,n):this.location.hash=n}},{key:"forward",value:function(){this._history.forward()}},{key:"back",value:function(){this._history.back()}},{key:"getState",value:function(){return this._history.state}},{key:"href",get:function(){return this.location.href}},{key:"protocol",get:function(){return this.location.protocol}},{key:"hostname",get:function(){return this.location.hostname}},{key:"port",get:function(){return this.location.port}},{key:"pathname",get:function(){return this.location.pathname},set:function(t){this.location.pathname=t}},{key:"search",get:function(){return this.location.search}},{key:"hash",get:function(){return this.location.hash}}]),n}(rd);return t.\u0275fac=function(e){return new(e||t)(ge(id))},t.\u0275prov=Ot({factory:ud,token:t,providedIn:"platform"}),t}();function ld(){return!!window.history.pushState}function ud(){return new sd(ge(id))}function cd(t,e){if(0==t.length)return e;if(0==e.length)return t;var n=0;return t.endsWith("/")&&n++,e.startsWith("/")&&n++,2==n?t+e.substring(1):1==n?t+e:t+"/"+e}function dd(t){var e=t.match(/#|\?|$/),n=e&&e.index||t.length;return t.slice(0,n-("/"===t[n-1]?1:0))+t.slice(n)}function hd(t){return t&&"?"!==t[0]?"?"+t:t}var fd=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({factory:pd,token:t,providedIn:"root"}),t}();function pd(t){var e=ge(id).location;return new gd(ge(rd),e&&e.origin||"")}var md=new se("appBaseHref"),gd=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){var r;if(_(this,n),(r=e.call(this))._platformLocation=t,null==i&&(i=r._platformLocation.getBaseHrefFromDOM()),null==i)throw new Error("No base href set. Please provide a value for the APP_BASE_HREF token or add a base element to the document.");return r._baseHref=i,r}return b(n,[{key:"onPopState",value:function(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}},{key:"getBaseHref",value:function(){return this._baseHref}},{key:"prepareExternalUrl",value:function(t){return cd(this._baseHref,t)}},{key:"path",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this._platformLocation.pathname+hd(this._platformLocation.search),n=this._platformLocation.hash;return n&&t?"".concat(e).concat(n):e}},{key:"pushState",value:function(t,e,n,i){var r=this.prepareExternalUrl(n+hd(i));this._platformLocation.pushState(t,e,r)}},{key:"replaceState",value:function(t,e,n,i){var r=this.prepareExternalUrl(n+hd(i));this._platformLocation.replaceState(t,e,r)}},{key:"forward",value:function(){this._platformLocation.forward()}},{key:"back",value:function(){this._platformLocation.back()}}]),n}(fd);return t.\u0275fac=function(e){return new(e||t)(ge(rd),ge(md,8))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),vd=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this))._platformLocation=t,r._baseHref="",null!=i&&(r._baseHref=i),r}return b(n,[{key:"onPopState",value:function(t){this._platformLocation.onPopState(t),this._platformLocation.onHashChange(t)}},{key:"getBaseHref",value:function(){return this._baseHref}},{key:"path",value:function(){var t=this._platformLocation.hash;return null==t&&(t="#"),t.length>0?t.substring(1):t}},{key:"prepareExternalUrl",value:function(t){var e=cd(this._baseHref,t);return e.length>0?"#"+e:e}},{key:"pushState",value:function(t,e,n,i){var r=this.prepareExternalUrl(n+hd(i));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.pushState(t,e,r)}},{key:"replaceState",value:function(t,e,n,i){var r=this.prepareExternalUrl(n+hd(i));0==r.length&&(r=this._platformLocation.pathname),this._platformLocation.replaceState(t,e,r)}},{key:"forward",value:function(){this._platformLocation.forward()}},{key:"back",value:function(){this._platformLocation.back()}}]),n}(fd);return t.\u0275fac=function(e){return new(e||t)(ge(rd),ge(md,8))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),_d=function(){var t=function(){function t(e,n){var i=this;_(this,t),this._subject=new Ou,this._urlChangeListeners=[],this._platformStrategy=e;var r=this._platformStrategy.getBaseHref();this._platformLocation=n,this._baseHref=dd(bd(r)),this._platformStrategy.onPopState((function(t){i._subject.emit({url:i.path(!0),pop:!0,state:t.state,type:t.type})}))}return b(t,[{key:"path",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this.normalize(this._platformStrategy.path(t))}},{key:"getState",value:function(){return this._platformLocation.getState()}},{key:"isCurrentPathEqualTo",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return this.path()==this.normalize(t+hd(e))}},{key:"normalize",value:function(e){return t.stripTrailingSlash(function(t,e){return t&&e.startsWith(t)?e.substring(t.length):e}(this._baseHref,bd(e)))}},{key:"prepareExternalUrl",value:function(t){return t&&"/"!==t[0]&&(t="/"+t),this._platformStrategy.prepareExternalUrl(t)}},{key:"go",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this._platformStrategy.pushState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+hd(e)),n)}},{key:"replaceState",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;this._platformStrategy.replaceState(n,"",t,e),this._notifyUrlChangeListeners(this.prepareExternalUrl(t+hd(e)),n)}},{key:"forward",value:function(){this._platformStrategy.forward()}},{key:"back",value:function(){this._platformStrategy.back()}},{key:"onUrlChange",value:function(t){var e=this;this._urlChangeListeners.push(t),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe((function(t){e._notifyUrlChangeListeners(t.url,t.state)})))}},{key:"_notifyUrlChangeListeners",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1?arguments[1]:void 0;this._urlChangeListeners.forEach((function(n){return n(t,e)}))}},{key:"subscribe",value:function(t,e,n){return this._subject.subscribe({next:t,error:e,complete:n})}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(fd),ge(rd))},t.normalizeQueryParams=hd,t.joinWithSlash=cd,t.stripTrailingSlash=dd,t.\u0275prov=Ot({factory:yd,token:t,providedIn:"root"}),t}();function yd(){return new _d(ge(fd),ge(rd))}function bd(t){return t.replace(/\/index.html$/,"")}var kd={ADP:[void 0,void 0,0],AFN:[void 0,void 0,0],ALL:[void 0,void 0,0],AMD:[void 0,void 0,2],AOA:[void 0,"Kz"],ARS:[void 0,"$"],AUD:["A$","$"],BAM:[void 0,"KM"],BBD:[void 0,"$"],BDT:[void 0,"\u09f3"],BHD:[void 0,void 0,3],BIF:[void 0,void 0,0],BMD:[void 0,"$"],BND:[void 0,"$"],BOB:[void 0,"Bs"],BRL:["R$"],BSD:[void 0,"$"],BWP:[void 0,"P"],BYN:[void 0,"\u0440.",2],BYR:[void 0,void 0,0],BZD:[void 0,"$"],CAD:["CA$","$",2],CHF:[void 0,void 0,2],CLF:[void 0,void 0,4],CLP:[void 0,"$",0],CNY:["CN\xa5","\xa5"],COP:[void 0,"$",2],CRC:[void 0,"\u20a1",2],CUC:[void 0,"$"],CUP:[void 0,"$"],CZK:[void 0,"K\u010d",2],DJF:[void 0,void 0,0],DKK:[void 0,"kr",2],DOP:[void 0,"$"],EGP:[void 0,"E\xa3"],ESP:[void 0,"\u20a7",0],EUR:["\u20ac"],FJD:[void 0,"$"],FKP:[void 0,"\xa3"],GBP:["\xa3"],GEL:[void 0,"\u20be"],GIP:[void 0,"\xa3"],GNF:[void 0,"FG",0],GTQ:[void 0,"Q"],GYD:[void 0,"$",2],HKD:["HK$","$"],HNL:[void 0,"L"],HRK:[void 0,"kn"],HUF:[void 0,"Ft",2],IDR:[void 0,"Rp",2],ILS:["\u20aa"],INR:["\u20b9"],IQD:[void 0,void 0,0],IRR:[void 0,void 0,0],ISK:[void 0,"kr",0],ITL:[void 0,void 0,0],JMD:[void 0,"$"],JOD:[void 0,void 0,3],JPY:["\xa5",void 0,0],KHR:[void 0,"\u17db"],KMF:[void 0,"CF",0],KPW:[void 0,"\u20a9",0],KRW:["\u20a9",void 0,0],KWD:[void 0,void 0,3],KYD:[void 0,"$"],KZT:[void 0,"\u20b8"],LAK:[void 0,"\u20ad",0],LBP:[void 0,"L\xa3",0],LKR:[void 0,"Rs"],LRD:[void 0,"$"],LTL:[void 0,"Lt"],LUF:[void 0,void 0,0],LVL:[void 0,"Ls"],LYD:[void 0,void 0,3],MGA:[void 0,"Ar",0],MGF:[void 0,void 0,0],MMK:[void 0,"K",0],MNT:[void 0,"\u20ae",2],MRO:[void 0,void 0,0],MUR:[void 0,"Rs",2],MXN:["MX$","$"],MYR:[void 0,"RM"],NAD:[void 0,"$"],NGN:[void 0,"\u20a6"],NIO:[void 0,"C$"],NOK:[void 0,"kr",2],NPR:[void 0,"Rs"],NZD:["NZ$","$"],OMR:[void 0,void 0,3],PHP:[void 0,"\u20b1"],PKR:[void 0,"Rs",2],PLN:[void 0,"z\u0142"],PYG:[void 0,"\u20b2",0],RON:[void 0,"lei"],RSD:[void 0,void 0,0],RUB:[void 0,"\u20bd"],RUR:[void 0,"\u0440."],RWF:[void 0,"RF",0],SBD:[void 0,"$"],SEK:[void 0,"kr",2],SGD:[void 0,"$"],SHP:[void 0,"\xa3"],SLL:[void 0,void 0,0],SOS:[void 0,void 0,0],SRD:[void 0,"$"],SSP:[void 0,"\xa3"],STD:[void 0,void 0,0],STN:[void 0,"Db"],SYP:[void 0,"\xa3",0],THB:[void 0,"\u0e3f"],TMM:[void 0,void 0,0],TND:[void 0,void 0,3],TOP:[void 0,"T$"],TRL:[void 0,void 0,0],TRY:[void 0,"\u20ba"],TTD:[void 0,"$"],TWD:["NT$","$",2],TZS:[void 0,void 0,2],UAH:[void 0,"\u20b4"],UGX:[void 0,void 0,0],USD:["$"],UYI:[void 0,void 0,0],UYU:[void 0,"$"],UYW:[void 0,void 0,4],UZS:[void 0,void 0,2],VEF:[void 0,"Bs",2],VND:["\u20ab",void 0,0],VUV:[void 0,void 0,0],XAF:["FCFA",void 0,0],XCD:["EC$","$"],XOF:["CFA",void 0,0],XPF:["CFPF",void 0,0],XXX:["\xa4"],YER:[void 0,void 0,0],ZAR:[void 0,"R"],ZMK:[void 0,void 0,0],ZMW:[void 0,"ZK"],ZWD:[void 0,void 0,0]},wd=function(t){return t[t.Decimal=0]="Decimal",t[t.Percent=1]="Percent",t[t.Currency=2]="Currency",t[t.Scientific=3]="Scientific",t}({}),Md=function(t){return t[t.Zero=0]="Zero",t[t.One=1]="One",t[t.Two=2]="Two",t[t.Few=3]="Few",t[t.Many=4]="Many",t[t.Other=5]="Other",t}({}),Sd=function(t){return t[t.Format=0]="Format",t[t.Standalone=1]="Standalone",t}({}),xd=function(t){return t[t.Narrow=0]="Narrow",t[t.Abbreviated=1]="Abbreviated",t[t.Wide=2]="Wide",t[t.Short=3]="Short",t}({}),Cd=function(t){return t[t.Short=0]="Short",t[t.Medium=1]="Medium",t[t.Long=2]="Long",t[t.Full=3]="Full",t}({}),Dd=function(t){return t[t.Decimal=0]="Decimal",t[t.Group=1]="Group",t[t.List=2]="List",t[t.PercentSign=3]="PercentSign",t[t.PlusSign=4]="PlusSign",t[t.MinusSign=5]="MinusSign",t[t.Exponential=6]="Exponential",t[t.SuperscriptingExponent=7]="SuperscriptingExponent",t[t.PerMille=8]="PerMille",t[t[1/0]=9]="Infinity",t[t.NaN=10]="NaN",t[t.TimeSeparator=11]="TimeSeparator",t[t.CurrencyDecimal=12]="CurrencyDecimal",t[t.CurrencyGroup=13]="CurrencyGroup",t}({});function Ld(t,e){return Yd(pu(t)[gu.DateFormat],e)}function Td(t,e){return Yd(pu(t)[gu.TimeFormat],e)}function Ed(t,e){return Yd(pu(t)[gu.DateTimeFormat],e)}function Pd(t,e){var n=pu(t),i=n[gu.NumberSymbols][e];if(void 0===i){if(e===Dd.CurrencyDecimal)return n[gu.NumberSymbols][Dd.Decimal];if(e===Dd.CurrencyGroup)return n[gu.NumberSymbols][Dd.Group]}return i}function Od(t,e){return pu(t)[gu.NumberFormats][e]}function Ad(t){return pu(t)[gu.Currencies]}function Id(t){if(!t[gu.ExtraData])throw new Error('Missing extra locale data for the locale "'.concat(t[gu.LocaleId],'". Use "registerLocaleData" to load new data. See the "I18n guide" on angular.io to know more.'))}function Yd(t,e){for(var n=e;n>-1;n--)if(void 0!==t[n])return t[n];throw new Error("Locale data API: locale data undefined")}function Fd(t){var e=l(t.split(":"),2);return{hours:+e[0],minutes:+e[1]}}function Rd(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"en",i=Ad(n)[t]||kd[t]||[],r=i[1];return"narrow"===e&&"string"==typeof r?r:i[0]||t}var Nd=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/,Hd={},jd=/((?:[^GyMLwWdEabBhHmsSzZO']+)|(?:'(?:[^']|'')*')|(?:G{1,5}|y{1,4}|M{1,5}|L{1,5}|w{1,2}|W{1}|d{1,2}|E{1,6}|a{1,5}|b{1,5}|B{1,5}|h{1,2}|H{1,2}|m{1,2}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|O{1,4}))([\s\S]*)/,Bd=function(t){return t[t.Short=0]="Short",t[t.ShortGMT=1]="ShortGMT",t[t.Long=2]="Long",t[t.Extended=3]="Extended",t}({}),Vd=function(t){return t[t.FullYear=0]="FullYear",t[t.Month=1]="Month",t[t.Date=2]="Date",t[t.Hours=3]="Hours",t[t.Minutes=4]="Minutes",t[t.Seconds=5]="Seconds",t[t.FractionalSeconds=6]="FractionalSeconds",t[t.Day=7]="Day",t}({}),zd=function(t){return t[t.DayPeriods=0]="DayPeriods",t[t.Days=1]="Days",t[t.Months=2]="Months",t[t.Eras=3]="Eras",t}({});function Wd(t,e,n,i){var r=function(t){if(rh(t))return t;if("number"==typeof t&&!isNaN(t))return new Date(t);if("string"==typeof t){t=t.trim();var e,n=parseFloat(t);if(!isNaN(t-n))return new Date(n);if(/^(\d{4}-\d{1,2}-\d{1,2})$/.test(t)){var i=l(t.split("-").map((function(t){return+t})),3);return new Date(i[0],i[1]-1,i[2])}if(e=t.match(Nd))return function(t){var e=new Date(0),n=0,i=0,r=t[8]?e.setUTCFullYear:e.setFullYear,a=t[8]?e.setUTCHours:e.setHours;t[9]&&(n=Number(t[9]+t[10]),i=Number(t[9]+t[11])),r.call(e,Number(t[1]),Number(t[2])-1,Number(t[3]));var o=Number(t[4]||0)-n,s=Number(t[5]||0)-i,l=Number(t[6]||0),u=Math.round(1e3*parseFloat("0."+(t[7]||0)));return a.call(e,o,s,l,u),e}(e)}var r=new Date(t);if(!rh(r))throw new Error('Unable to convert "'.concat(t,'" into a date'));return r}(t);e=function t(e,n){var i=function(t){return pu(t)[gu.LocaleId]}(e);if(Hd[i]=Hd[i]||{},Hd[i][n])return Hd[i][n];var r="";switch(n){case"shortDate":r=Ld(e,Cd.Short);break;case"mediumDate":r=Ld(e,Cd.Medium);break;case"longDate":r=Ld(e,Cd.Long);break;case"fullDate":r=Ld(e,Cd.Full);break;case"shortTime":r=Td(e,Cd.Short);break;case"mediumTime":r=Td(e,Cd.Medium);break;case"longTime":r=Td(e,Cd.Long);break;case"fullTime":r=Td(e,Cd.Full);break;case"short":var a=t(e,"shortTime"),o=t(e,"shortDate");r=Ud(Ed(e,Cd.Short),[a,o]);break;case"medium":var s=t(e,"mediumTime"),l=t(e,"mediumDate");r=Ud(Ed(e,Cd.Medium),[s,l]);break;case"long":var u=t(e,"longTime"),c=t(e,"longDate");r=Ud(Ed(e,Cd.Long),[u,c]);break;case"full":var d=t(e,"fullTime"),h=t(e,"fullDate");r=Ud(Ed(e,Cd.Full),[d,h])}return r&&(Hd[i][n]=r),r}(n,e)||e;for(var a,o=[];e;){if(!(a=jd.exec(e))){o.push(e);break}var s=(o=o.concat(a.slice(1))).pop();if(!s)break;e=s}var u=r.getTimezoneOffset();i&&(u=ih(i,u),r=function(t,e,n){var i=t.getTimezoneOffset();return function(t,e){return(t=new Date(t.getTime())).setMinutes(t.getMinutes()+e),t}(t,-1*(ih(e,i)-i))}(r,i));var c="";return o.forEach((function(t){var e=function(t){if(nh[t])return nh[t];var e;switch(t){case"G":case"GG":case"GGG":e=Zd(zd.Eras,xd.Abbreviated);break;case"GGGG":e=Zd(zd.Eras,xd.Wide);break;case"GGGGG":e=Zd(zd.Eras,xd.Narrow);break;case"y":e=Kd(Vd.FullYear,1,0,!1,!0);break;case"yy":e=Kd(Vd.FullYear,2,0,!0,!0);break;case"yyy":e=Kd(Vd.FullYear,3,0,!1,!0);break;case"yyyy":e=Kd(Vd.FullYear,4,0,!1,!0);break;case"M":case"L":e=Kd(Vd.Month,1,1);break;case"MM":case"LL":e=Kd(Vd.Month,2,1);break;case"MMM":e=Zd(zd.Months,xd.Abbreviated);break;case"MMMM":e=Zd(zd.Months,xd.Wide);break;case"MMMMM":e=Zd(zd.Months,xd.Narrow);break;case"LLL":e=Zd(zd.Months,xd.Abbreviated,Sd.Standalone);break;case"LLLL":e=Zd(zd.Months,xd.Wide,Sd.Standalone);break;case"LLLLL":e=Zd(zd.Months,xd.Narrow,Sd.Standalone);break;case"w":e=eh(1);break;case"ww":e=eh(2);break;case"W":e=eh(1,!0);break;case"d":e=Kd(Vd.Date,1);break;case"dd":e=Kd(Vd.Date,2);break;case"E":case"EE":case"EEE":e=Zd(zd.Days,xd.Abbreviated);break;case"EEEE":e=Zd(zd.Days,xd.Wide);break;case"EEEEE":e=Zd(zd.Days,xd.Narrow);break;case"EEEEEE":e=Zd(zd.Days,xd.Short);break;case"a":case"aa":case"aaa":e=Zd(zd.DayPeriods,xd.Abbreviated);break;case"aaaa":e=Zd(zd.DayPeriods,xd.Wide);break;case"aaaaa":e=Zd(zd.DayPeriods,xd.Narrow);break;case"b":case"bb":case"bbb":e=Zd(zd.DayPeriods,xd.Abbreviated,Sd.Standalone,!0);break;case"bbbb":e=Zd(zd.DayPeriods,xd.Wide,Sd.Standalone,!0);break;case"bbbbb":e=Zd(zd.DayPeriods,xd.Narrow,Sd.Standalone,!0);break;case"B":case"BB":case"BBB":e=Zd(zd.DayPeriods,xd.Abbreviated,Sd.Format,!0);break;case"BBBB":e=Zd(zd.DayPeriods,xd.Wide,Sd.Format,!0);break;case"BBBBB":e=Zd(zd.DayPeriods,xd.Narrow,Sd.Format,!0);break;case"h":e=Kd(Vd.Hours,1,-12);break;case"hh":e=Kd(Vd.Hours,2,-12);break;case"H":e=Kd(Vd.Hours,1);break;case"HH":e=Kd(Vd.Hours,2);break;case"m":e=Kd(Vd.Minutes,1);break;case"mm":e=Kd(Vd.Minutes,2);break;case"s":e=Kd(Vd.Seconds,1);break;case"ss":e=Kd(Vd.Seconds,2);break;case"S":e=Kd(Vd.FractionalSeconds,1);break;case"SS":e=Kd(Vd.FractionalSeconds,2);break;case"SSS":e=Kd(Vd.FractionalSeconds,3);break;case"Z":case"ZZ":case"ZZZ":e=Qd(Bd.Short);break;case"ZZZZZ":e=Qd(Bd.Extended);break;case"O":case"OO":case"OOO":case"z":case"zz":case"zzz":e=Qd(Bd.ShortGMT);break;case"OOOO":case"ZZZZ":case"zzzz":e=Qd(Bd.Long);break;default:return null}return nh[t]=e,e}(t);c+=e?e(r,n,u):"''"===t?"'":t.replace(/(^'|'$)/g,"").replace(/''/g,"'")})),c}function Ud(t,e){return e&&(t=t.replace(/\{([^}]+)}/g,(function(t,n){return null!=e&&n in e?e[n]:t}))),t}function qd(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"-",i=arguments.length>3?arguments[3]:void 0,r=arguments.length>4?arguments[4]:void 0,a="";(t<0||r&&t<=0)&&(r?t=1-t:(t=-t,a=n));for(var o=String(t);o.length2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return function(a,o){var s=Jd(t,a);if((n>0||s>-n)&&(s+=n),t===Vd.Hours)0===s&&-12===n&&(s=12);else if(t===Vd.FractionalSeconds)return Gd(s,e);var l=Pd(o,Dd.MinusSign);return qd(s,e,l,i,r)}}function Jd(t,e){switch(t){case Vd.FullYear:return e.getFullYear();case Vd.Month:return e.getMonth();case Vd.Date:return e.getDate();case Vd.Hours:return e.getHours();case Vd.Minutes:return e.getMinutes();case Vd.Seconds:return e.getSeconds();case Vd.FractionalSeconds:return e.getMilliseconds();case Vd.Day:return e.getDay();default:throw new Error('Unknown DateType value "'.concat(t,'".'))}}function Zd(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Sd.Format,i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(r,a){return $d(r,a,t,e,n,i)}}function $d(t,e,n,i,r,a){switch(n){case zd.Months:return function(t,e,n){var i=pu(t),r=Yd([i[gu.MonthsFormat],i[gu.MonthsStandalone]],e);return Yd(r,n)}(e,r,i)[t.getMonth()];case zd.Days:return function(t,e,n){var i=pu(t),r=Yd([i[gu.DaysFormat],i[gu.DaysStandalone]],e);return Yd(r,n)}(e,r,i)[t.getDay()];case zd.DayPeriods:var o=t.getHours(),s=t.getMinutes();if(a){var u=function(t){var e=pu(t);return Id(e),(e[gu.ExtraData][2]||[]).map((function(t){return"string"==typeof t?Fd(t):[Fd(t[0]),Fd(t[1])]}))}(e),c=function(t,e,n){var i=pu(t);Id(i);var r=Yd([i[gu.ExtraData][0],i[gu.ExtraData][1]],e)||[];return Yd(r,n)||[]}(e,r,i),d=u.findIndex((function(t){if(Array.isArray(t)){var e=l(t,2),n=e[0],i=e[1],r=o>=n.hours&&s>=n.minutes,a=o0?Math.floor(r/60):Math.ceil(r/60);switch(t){case Bd.Short:return(r>=0?"+":"")+qd(o,2,a)+qd(Math.abs(r%60),2,a);case Bd.ShortGMT:return"GMT"+(r>=0?"+":"")+qd(o,1,a);case Bd.Long:return"GMT"+(r>=0?"+":"")+qd(o,2,a)+":"+qd(Math.abs(r%60),2,a);case Bd.Extended:return 0===i?"Z":(r>=0?"+":"")+qd(o,2,a)+":"+qd(Math.abs(r%60),2,a);default:throw new Error('Unknown zone width "'.concat(t,'"'))}}}function Xd(t){var e=new Date(t,0,1).getDay();return new Date(t,0,1+(e<=4?4:11)-e)}function th(t){return new Date(t.getFullYear(),t.getMonth(),t.getDate()+(4-t.getDay()))}function eh(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return function(n,i){var r;if(e){var a=new Date(n.getFullYear(),n.getMonth(),1).getDay()-1,o=n.getDate();r=1+Math.floor((o+a)/7)}else{var s=Xd(n.getFullYear()),l=th(n).getTime()-s.getTime();r=1+Math.round(l/6048e5)}return qd(r,t,Pd(i,Dd.MinusSign))}}var nh={};function ih(t,e){t=t.replace(/:/g,"");var n=Date.parse("Jan 01, 1970 00:00:00 "+t)/6e4;return isNaN(n)?e:n}function rh(t){return t instanceof Date&&!isNaN(t.valueOf())}var ah=/^(\d+)?\.((\d+)(-(\d+))?)?$/;function oh(t,e,n,i,r,a){var o=arguments.length>6&&void 0!==arguments[6]&&arguments[6],s="",l=!1;if(isFinite(t)){var u=ch(t);o&&(u=uh(u));var c=e.minInt,d=e.minFrac,h=e.maxFrac;if(a){var f=a.match(ah);if(null===f)throw new Error("".concat(a," is not a valid digit info"));var p=f[1],m=f[3],g=f[5];null!=p&&(c=hh(p)),null!=m&&(d=hh(m)),null!=g?h=hh(g):null!=m&&d>h&&(h=d)}dh(u,d,h);var v=u.digits,_=u.integerLen,y=u.exponent,b=[];for(l=v.every((function(t){return!t}));_0?b=v.splice(_,v.length):(b=v,v=[0]);var k=[];for(v.length>=e.lgSize&&k.unshift(v.splice(-e.lgSize,v.length).join(""));v.length>e.gSize;)k.unshift(v.splice(-e.gSize,v.length).join(""));v.length&&k.unshift(v.join("")),s=k.join(Pd(n,i)),b.length&&(s+=Pd(n,r)+b.join("")),y&&(s+=Pd(n,Dd.Exponential)+"+"+y)}else s=Pd(n,Dd.Infinity);return t<0&&!l?e.negPre+s+e.negSuf:e.posPre+s+e.posSuf}function sh(t,e,n,i,r){var a=lh(Od(e,wd.Currency),Pd(e,Dd.MinusSign));return a.minFrac=function(t){var e,n=kd[t];return n&&(e=n[2]),"number"==typeof e?e:2}(i),a.maxFrac=a.minFrac,oh(t,a,e,Dd.CurrencyGroup,Dd.CurrencyDecimal,r).replace("\xa4",n).replace("\xa4","").trim()}function lh(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"-",n={minInt:1,minFrac:0,maxFrac:0,posPre:"",posSuf:"",negPre:"",negSuf:"",gSize:0,lgSize:0},i=t.split(";"),r=i[0],a=i[1],o=-1!==r.indexOf(".")?r.split("."):[r.substring(0,r.lastIndexOf("0")+1),r.substring(r.lastIndexOf("0")+1)],s=o[0],l=o[1]||"";n.posPre=s.substr(0,s.indexOf("#"));for(var u=0;u-1&&(o=o.replace(".","")),(i=o.search(/e/i))>0?(n<0&&(n=i),n+=+o.slice(i+1),o=o.substring(0,i)):n<0&&(n=o.length),i=0;"0"===o.charAt(i);i++);if(i===(a=o.length))e=[0],n=1;else{for(a--;"0"===o.charAt(a);)a--;for(n-=i,e=[],r=0;i<=a;i++,r++)e[r]=Number(o.charAt(i))}return n>22&&(e=e.splice(0,21),s=n-1,n=1),{digits:e,exponent:s,integerLen:n}}function dh(t,e,n){if(e>n)throw new Error("The minimum number of digits after fraction (".concat(e,") is higher than the maximum (").concat(n,")."));var i=t.digits,r=i.length-t.integerLen,a=Math.min(Math.max(e,r),n),o=a+t.integerLen,s=i[o];if(o>0){i.splice(Math.max(t.integerLen,o));for(var l=o;l=5)if(o-1<0){for(var c=0;c>o;c--)i.unshift(0),t.integerLen++;i.unshift(1),t.integerLen++}else i[o-1]++;for(;r=h?i.pop():d=!1),e>=10?1:0}),0);f&&(i.unshift(f),t.integerLen++)}function hh(t){var e=parseInt(t);if(isNaN(e))throw new Error("Invalid integer literal when parsing "+t);return e}var fh=function t(){_(this,t)};function ph(t,e,n,i){var r="=".concat(t);if(e.indexOf(r)>-1)return r;if(r=n.getPluralCategory(t,i),e.indexOf(r)>-1)return r;if(e.indexOf("other")>-1)return"other";throw new Error('No plural message found for value "'.concat(t,'"'))}var mh=function(){var t=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this)).locale=t,i}return b(n,[{key:"getPluralCategory",value:function(t,e){switch(function(t){return pu(t)[gu.PluralCase]}(e||this.locale)(t)){case Md.Zero:return"zero";case Md.One:return"one";case Md.Two:return"two";case Md.Few:return"few";case Md.Many:return"many";default:return"other"}}}]),n}(fh);return t.\u0275fac=function(e){return new(e||t)(ge(dc))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}();function gh(t,e){e=encodeURIComponent(e);var n,i=d(t.split(";"));try{for(i.s();!(n=i.n()).done;){var r=n.value,a=r.indexOf("="),o=l(-1==a?[r,""]:[r.slice(0,a),r.slice(a+1)],2),s=o[1];if(o[0].trim()===e)return decodeURIComponent(s)}}catch(u){i.e(u)}finally{i.f()}return null}var vh=function(){var t=function(){function t(e,n,i,r){_(this,t),this._iterableDiffers=e,this._keyValueDiffers=n,this._ngEl=i,this._renderer=r,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}return b(t,[{key:"ngDoCheck",value:function(){if(this._iterableDiffer){var t=this._iterableDiffer.diff(this._rawClass);t&&this._applyIterableChanges(t)}else if(this._keyValueDiffer){var e=this._keyValueDiffer.diff(this._rawClass);e&&this._applyKeyValueChanges(e)}}},{key:"_applyKeyValueChanges",value:function(t){var e=this;t.forEachAddedItem((function(t){return e._toggleClass(t.key,t.currentValue)})),t.forEachChangedItem((function(t){return e._toggleClass(t.key,t.currentValue)})),t.forEachRemovedItem((function(t){t.previousValue&&e._toggleClass(t.key,!1)}))}},{key:"_applyIterableChanges",value:function(t){var e=this;t.forEachAddedItem((function(t){if("string"!=typeof t.item)throw new Error("NgClass can only toggle CSS classes expressed as strings, got ".concat(Vt(t.item)));e._toggleClass(t.item,!0)})),t.forEachRemovedItem((function(t){return e._toggleClass(t.item,!1)}))}},{key:"_applyClasses",value:function(t){var e=this;t&&(Array.isArray(t)||t instanceof Set?t.forEach((function(t){return e._toggleClass(t,!0)})):Object.keys(t).forEach((function(n){return e._toggleClass(n,!!t[n])})))}},{key:"_removeClasses",value:function(t){var e=this;t&&(Array.isArray(t)||t instanceof Set?t.forEach((function(t){return e._toggleClass(t,!1)})):Object.keys(t).forEach((function(t){return e._toggleClass(t,!1)})))}},{key:"_toggleClass",value:function(t,e){var n=this;(t=t.trim())&&t.split(/\s+/g).forEach((function(t){e?n._renderer.addClass(n._ngEl.nativeElement,t):n._renderer.removeClass(n._ngEl.nativeElement,t)}))}},{key:"klass",set:function(t){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof t?t.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}},{key:"ngClass",set:function(t){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof t?t.split(/\s+/):t,this._rawClass&&(Jo(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Zl),rs($l),rs(Pl),rs(Yl))},t.\u0275dir=Ve({type:t,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"}}),t}(),_h=function(){var t=function(){function t(e){_(this,t),this._viewContainerRef=e,this._componentRef=null,this._moduleRef=null}return b(t,[{key:"ngOnChanges",value:function(t){if(this._viewContainerRef.clear(),this._componentRef=null,this.ngComponentOutlet){var e=this.ngComponentOutletInjector||this._viewContainerRef.parentInjector;if(t.ngComponentOutletNgModuleFactory)if(this._moduleRef&&this._moduleRef.destroy(),this.ngComponentOutletNgModuleFactory){var n=e.get(we);this._moduleRef=this.ngComponentOutletNgModuleFactory.create(n.injector)}else this._moduleRef=null;var i=(this._moduleRef?this._moduleRef.componentFactoryResolver:e.get(El)).resolveComponentFactory(this.ngComponentOutlet);this._componentRef=this._viewContainerRef.createComponent(i,this._viewContainerRef.length,e,this.ngComponentOutletContent)}}},{key:"ngOnDestroy",value:function(){this._moduleRef&&this._moduleRef.destroy()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(iu))},t.\u0275dir=Ve({type:t,selectors:[["","ngComponentOutlet",""]],inputs:{ngComponentOutlet:"ngComponentOutlet",ngComponentOutletInjector:"ngComponentOutletInjector",ngComponentOutletContent:"ngComponentOutletContent",ngComponentOutletNgModuleFactory:"ngComponentOutletNgModuleFactory"},features:[en]}),t}(),yh=function(){function t(e,n,i,r){_(this,t),this.$implicit=e,this.ngForOf=n,this.index=i,this.count=r}return b(t,[{key:"first",get:function(){return 0===this.index}},{key:"last",get:function(){return this.index===this.count-1}},{key:"even",get:function(){return this.index%2==0}},{key:"odd",get:function(){return!this.even}}]),t}(),bh=function(){var t=function(){function t(e,n,i){_(this,t),this._viewContainer=e,this._template=n,this._differs=i,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}return b(t,[{key:"ngDoCheck",value:function(){if(this._ngForOfDirty){this._ngForOfDirty=!1;var t=this._ngForOf;if(!this._differ&&t)try{this._differ=this._differs.find(t).create(this.ngForTrackBy)}catch(i){throw new Error("Cannot find a differ supporting object '".concat(t,"' of type '").concat((e=t).name||typeof e,"'. NgFor only supports binding to Iterables such as Arrays."))}}var e;if(this._differ){var n=this._differ.diff(this._ngForOf);n&&this._applyChanges(n)}}},{key:"_applyChanges",value:function(t){var e=this,n=[];t.forEachOperation((function(t,i,r){if(null==t.previousIndex){var a=e._viewContainer.createEmbeddedView(e._template,new yh(null,e._ngForOf,-1,-1),null===r?void 0:r),o=new kh(t,a);n.push(o)}else if(null==r)e._viewContainer.remove(null===i?void 0:i);else if(null!==i){var s=e._viewContainer.get(i);e._viewContainer.move(s,r);var l=new kh(t,s);n.push(l)}}));for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:"mediumDate",i=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;if(null==e||""===e||e!=e)return null;try{return Wd(e,n,r||this.locale,i)}catch(a){throw Ah(t,a.message)}}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(dc))},t.\u0275pipe=ze({name:"date",type:t,pure:!0}),t}(),zh=/#/g,Wh=function(){var t=function(){function t(e){_(this,t),this._localization=e}return b(t,[{key:"transform",value:function(e,n,i){if(null==e)return"";if("object"!=typeof n||null===n)throw Ah(t,n);return n[ph(e,Object.keys(n),this._localization,i)].replace(zh,e.toString())}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(fh))},t.\u0275pipe=ze({name:"i18nPlural",type:t,pure:!0}),t}(),Uh=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"transform",value:function(e,n){if(null==e)return"";if("object"!=typeof n||"string"!=typeof e)throw Ah(t,n);return n.hasOwnProperty(e)?n[e]:n.hasOwnProperty("other")?n.other:""}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275pipe=ze({name:"i18nSelect",type:t,pure:!0}),t}(),qh=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"transform",value:function(t){return JSON.stringify(t,null,2)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275pipe=ze({name:"json",type:t,pure:!1}),t}();function Gh(t,e){return{key:t,value:e}}var Kh=function(){var t=function(){function t(e){_(this,t),this.differs=e,this.keyValues=[]}return b(t,[{key:"transform",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Jh;if(!t||!(t instanceof Map)&&"object"!=typeof t)return null;this.differ||(this.differ=this.differs.find(t).create());var i=this.differ.diff(t);return i&&(this.keyValues=[],i.forEachItem((function(t){e.keyValues.push(Gh(t.key,t.currentValue))})),this.keyValues.sort(n)),this.keyValues}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs($l))},t.\u0275pipe=ze({name:"keyvalue",type:t,pure:!1}),t}();function Jh(t,e){var n=t.key,i=e.key;if(n===i)return 0;if(void 0===n)return 1;if(void 0===i)return-1;if(null===n)return 1;if(null===i)return-1;if("string"==typeof n&&"string"==typeof i)return n1&&void 0!==arguments[1]?arguments[1]:"USD";_(this,t),this._locale=e,this._defaultCurrencyCode=n}return b(t,[{key:"transform",value:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"symbol",r=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;if(Xh(e))return null;a=a||this._locale,"boolean"==typeof i&&(console&&console.warn&&console.warn('Warning: the currency pipe has been changed in Angular v5. The symbolDisplay option (third parameter) is now a string instead of a boolean. The accepted values are "code", "symbol" or "symbol-narrow".'),i=i?"symbol":"code");var o=n||this._defaultCurrencyCode;"code"!==i&&(o="symbol"===i||"symbol-narrow"===i?Rd(o,"symbol"===i?"wide":"narrow",a):i);try{var s=tf(e);return sh(s,a,o,n,r)}catch(l){throw Ah(t,l.message)}}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(dc),rs(hc))},t.\u0275pipe=ze({name:"currency",type:t,pure:!0}),t}();function Xh(t){return null==t||""===t||t!=t}function tf(t){if("string"==typeof t&&!isNaN(Number(t)-parseFloat(t)))return Number(t);if("number"!=typeof t)throw new Error("".concat(t," is not a number"));return t}var ef,nf=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"transform",value:function(e,n,i){if(null==e)return e;if(!this.supports(e))throw Ah(t,e);return e.slice(n,i)}},{key:"supports",value:function(t){return"string"==typeof t||Array.isArray(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275pipe=ze({name:"slice",type:t,pure:!1}),t}(),rf=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[{provide:fh,useClass:mh}]}),t}(),af=function(){var t=function t(){_(this,t)};return t.\u0275prov=Ot({token:t,providedIn:"root",factory:function(){return new of(ge(id),window,ge(Ui))}}),t}(),of=function(){function t(e,n,i){_(this,t),this.document=e,this.window=n,this.errorHandler=i,this.offset=function(){return[0,0]}}return b(t,[{key:"setOffset",value:function(t){this.offset=Array.isArray(t)?function(){return t}:t}},{key:"getScrollPosition",value:function(){return this.supportScrollRestoration()?[this.window.scrollX,this.window.scrollY]:[0,0]}},{key:"scrollToPosition",value:function(t){this.supportScrollRestoration()&&this.window.scrollTo(t[0],t[1])}},{key:"scrollToAnchor",value:function(t){if(this.supportScrollRestoration()){t=this.window.CSS&&this.window.CSS.escape?this.window.CSS.escape(t):t.replace(/(\"|\'\ |:|\.|\[|\]|,|=)/g,"\\$1");try{var e=this.document.querySelector("#".concat(t));if(e)return void this.scrollToElement(e);var n=this.document.querySelector("[name='".concat(t,"']"));if(n)return void this.scrollToElement(n)}catch(i){this.errorHandler.handleError(i)}}}},{key:"setHistoryScrollRestoration",value:function(t){if(this.supportScrollRestoration()){var e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=t)}}},{key:"scrollToElement",value:function(t){var e=t.getBoundingClientRect(),n=e.left+this.window.pageXOffset,i=e.top+this.window.pageYOffset,r=this.offset();this.window.scrollTo(n-r[0],i-r[1])}},{key:"supportScrollRestoration",value:function(){try{return!!this.window&&!!this.window.scrollTo}catch(t){return!1}}}]),t}(),sf=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"getProperty",value:function(t,e){return t[e]}},{key:"log",value:function(t){window.console&&window.console.log&&window.console.log(t)}},{key:"logGroup",value:function(t){window.console&&window.console.group&&window.console.group(t)}},{key:"logGroupEnd",value:function(){window.console&&window.console.groupEnd&&window.console.groupEnd()}},{key:"onAndCancel",value:function(t,e,n){return t.addEventListener(e,n,!1),function(){t.removeEventListener(e,n,!1)}}},{key:"dispatchEvent",value:function(t,e){t.dispatchEvent(e)}},{key:"remove",value:function(t){return t.parentNode&&t.parentNode.removeChild(t),t}},{key:"getValue",value:function(t){return t.value}},{key:"createElement",value:function(t,e){return(e=e||this.getDefaultDocument()).createElement(t)}},{key:"createHtmlDocument",value:function(){return document.implementation.createHTMLDocument("fakeTitle")}},{key:"getDefaultDocument",value:function(){return document}},{key:"isElementNode",value:function(t){return t.nodeType===Node.ELEMENT_NODE}},{key:"isShadowRoot",value:function(t){return t instanceof DocumentFragment}},{key:"getGlobalEventTarget",value:function(t,e){return"window"===e?window:"document"===e?t:"body"===e?t.body:null}},{key:"getHistory",value:function(){return window.history}},{key:"getLocation",value:function(){return window.location}},{key:"getBaseHref",value:function(t){var e,n=lf||(lf=document.querySelector("base"))?lf.getAttribute("href"):null;return null==n?null:(e=n,ef||(ef=document.createElement("a")),ef.setAttribute("href",e),"/"===ef.pathname.charAt(0)?ef.pathname:"/"+ef.pathname)}},{key:"resetBaseElement",value:function(){lf=null}},{key:"getUserAgent",value:function(){return window.navigator.userAgent}},{key:"performanceNow",value:function(){return window.performance&&window.performance.now?window.performance.now():(new Date).getTime()}},{key:"supportsCookies",value:function(){return!0}},{key:"getCookie",value:function(t){return gh(document.cookie,t)}}],[{key:"makeCurrent",value:function(){var t;t=new n,td||(td=t)}}]),n}(function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.call(this)}return b(n,[{key:"supportsDOMEvents",value:function(){return!0}}]),n}(nd)),lf=null,uf=new se("TRANSITION_ID"),cf=[{provide:nc,useFactory:function(t,e,n){return function(){n.get(ic).donePromise.then((function(){var n=ed();Array.prototype.slice.apply(e.querySelectorAll("style[ng-transition]")).filter((function(e){return e.getAttribute("ng-transition")===t})).forEach((function(t){return n.remove(t)}))}))}},deps:[uf,id,zo],multi:!0}],df=function(){function t(){_(this,t)}return b(t,[{key:"addToWindow",value:function(t){Xt.getAngularTestability=function(e){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=t.findTestabilityInTree(e,n);if(null==i)throw new Error("Could not find testability for element.");return i},Xt.getAllAngularTestabilities=function(){return t.getAllTestabilities()},Xt.getAllAngularRootElements=function(){return t.getAllRootElements()},Xt.frameworkStabilizers||(Xt.frameworkStabilizers=[]),Xt.frameworkStabilizers.push((function(t){var e=Xt.getAllAngularTestabilities(),n=e.length,i=!1,r=function(e){i=i||e,0==--n&&t(i)};e.forEach((function(t){t.whenStable(r)}))}))}},{key:"findTestabilityInTree",value:function(t,e,n){if(null==e)return null;var i=t.getTestability(e);return null!=i?i:n?ed().isShadowRoot(e)?this.findTestabilityInTree(t,e.host,!0):this.findTestabilityInTree(t,e.parentElement,!0):null}}],[{key:"init",value:function(){var e;e=new t,Ic=e}}]),t}(),hf=new se("EventManagerPlugins"),ff=function(){var t=function(){function t(e,n){var i=this;_(this,t),this._zone=n,this._eventNameToPlugin=new Map,e.forEach((function(t){return t.manager=i})),this._plugins=e.slice().reverse()}return b(t,[{key:"addEventListener",value:function(t,e,n){return this._findPluginFor(e).addEventListener(t,e,n)}},{key:"addGlobalEventListener",value:function(t,e,n){return this._findPluginFor(e).addGlobalEventListener(t,e,n)}},{key:"getZone",value:function(){return this._zone}},{key:"_findPluginFor",value:function(t){var e=this._eventNameToPlugin.get(t);if(e)return e;for(var n=this._plugins,i=0;i-1&&(e.splice(n,1),a+=t+".")})),a+=r,0!=e.length||0===r.length)return null;var o={};return o.domEventName=i,o.fullKey=a,o}},{key:"getEventFullKey",value:function(t){var e="",n=function(t){var e=t.key;if(null==e){if(null==(e=t.keyIdentifier))return"Unidentified";e.startsWith("U+")&&(e=String.fromCharCode(parseInt(e.substring(2),16)),3===t.location&&Ef.hasOwnProperty(e)&&(e=Ef[e]))}return Tf[e]||e}(t);return" "===(n=n.toLowerCase())?n="space":"."===n&&(n="dot"),Lf.forEach((function(i){i!=n&&(0,Pf[i])(t)&&(e+=i+".")})),e+=n}},{key:"eventCallback",value:function(t,e,i){return function(r){n.getEventFullKey(r)===t&&i.runGuarded((function(){return e(r)}))}}},{key:"_normalizeKey",value:function(t){switch(t){case"esc":return"escape";default:return t}}}]),n}(pf);return t.\u0275fac=function(e){return new(e||t)(ge(id))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Af=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({factory:function(){return ge(If)},token:t,providedIn:"root"}),t}(),If=function(){var t=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this))._doc=t,i}return b(n,[{key:"sanitize",value:function(t,e){if(null==e)return null;switch(t){case Cr.NONE:return e;case Cr.HTML:return Xi(e,"HTML")?Qi(e):function(t,e){var n=null;try{dr=dr||function(t){return function(){try{return!!(new window.DOMParser).parseFromString("","text/html")}catch(t){return!1}}()?new rr:new ar(t)}(t);var i=e?String(e):"";n=dr.getInertBodyElement(i);var r=5,a=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=a,a=n.innerHTML,n=dr.getInertBodyElement(i)}while(i!==a);var o=new kr,s=o.sanitizeChildren(xr(n)||n);return ir()&&o.sanitizedSomething&&console.warn("WARNING: sanitizing HTML stripped some content, see http://g.co/ng/security#xss"),s}finally{if(n)for(var l=xr(n)||n;l.firstChild;)l.removeChild(l.firstChild)}}(this._doc,String(e));case Cr.STYLE:return Xi(e,"Style")?Qi(e):e;case Cr.SCRIPT:if(Xi(e,"Script"))return Qi(e);throw new Error("unsafe value used in a script context");case Cr.URL:return tr(e),Xi(e,"URL")?Qi(e):lr(String(e));case Cr.RESOURCE_URL:if(Xi(e,"ResourceURL"))return Qi(e);throw new Error("unsafe value used in a resource URL context (see http://g.co/ng/security#xss)");default:throw new Error("Unexpected SecurityContext ".concat(t," (see http://g.co/ng/security#xss)"))}}},{key:"bypassSecurityTrustHtml",value:function(t){return new Gi(t)}},{key:"bypassSecurityTrustStyle",value:function(t){return new Ki(t)}},{key:"bypassSecurityTrustScript",value:function(t){return new Ji(t)}},{key:"bypassSecurityTrustUrl",value:function(t){return new Zi(t)}},{key:"bypassSecurityTrustResourceUrl",value:function(t){return new $i(t)}}]),n}(Af);return t.\u0275fac=function(e){return new(e||t)(ge(id))},t.\u0275prov=Ot({factory:function(){return t=ge(le),new If(t.get(id));var t},token:t,providedIn:"root"}),t}(),Yf=Hc($c,"browser",[{provide:lc,useValue:"browser"},{provide:sc,useValue:function(){sf.makeCurrent(),df.init()},multi:!0},{provide:id,useFactory:function(){return function(t){sn=t}(document),document},deps:[]}]),Ff=[[],{provide:Lo,useValue:"root"},{provide:Ui,useFactory:function(){return new Ui},deps:[]},{provide:hf,useClass:Df,multi:!0,deps:[id,Mc,lc]},{provide:hf,useClass:Of,multi:!0,deps:[id]},[],{provide:Mf,useClass:Mf,deps:[ff,gf,rc]},{provide:Al,useExisting:Mf},{provide:mf,useExisting:gf},{provide:gf,useClass:gf,deps:[id]},{provide:Oc,useClass:Oc,deps:[Mc]},{provide:ff,useClass:ff,deps:[hf,Mc]},[]],Rf=function(){var t=function(){function t(e){if(_(this,t),e)throw new Error("BrowserModule has already been loaded. If you need access to common directives such as NgIf and NgFor from a lazy loaded module, import CommonModule instead.")}return b(t,null,[{key:"withServerTransition",value:function(e){return{ngModule:t,providers:[{provide:rc,useValue:e.appId},{provide:uf,useExisting:rc},cf]}}}]),t}();return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)(ge(t,12))},providers:Ff,imports:[rf,Xc]}),t}();"undefined"!=typeof window&&window;var Nf=function t(){_(this,t)},Hf=function t(){_(this,t)};function jf(t,e){return{type:7,name:t,definitions:e,options:{}}}function Bf(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:4,styles:e,timings:t}}function Vf(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:3,steps:t,options:e}}function zf(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return{type:2,steps:t,options:e}}function Wf(t){return{type:6,styles:t,offset:null}}function Uf(t,e,n){return{type:0,name:t,styles:e,options:n}}function qf(t){return{type:5,steps:t}}function Gf(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:1,expr:t,animation:e,options:n}}function Kf(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return{type:9,options:t}}function Jf(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;return{type:11,selector:t,animation:e,options:n}}function Zf(t){Promise.resolve(null).then(t)}var $f=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;_(this,t),this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this.parentPlayer=null,this.totalTime=e+n}return b(t,[{key:"_onFinish",value:function(){this._finished||(this._finished=!0,this._onDoneFns.forEach((function(t){return t()})),this._onDoneFns=[])}},{key:"onStart",value:function(t){this._onStartFns.push(t)}},{key:"onDone",value:function(t){this._onDoneFns.push(t)}},{key:"onDestroy",value:function(t){this._onDestroyFns.push(t)}},{key:"hasStarted",value:function(){return this._started}},{key:"init",value:function(){}},{key:"play",value:function(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}},{key:"triggerMicrotask",value:function(){var t=this;Zf((function(){return t._onFinish()}))}},{key:"_onStart",value:function(){this._onStartFns.forEach((function(t){return t()})),this._onStartFns=[]}},{key:"pause",value:function(){}},{key:"restart",value:function(){}},{key:"finish",value:function(){this._onFinish()}},{key:"destroy",value:function(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach((function(t){return t()})),this._onDestroyFns=[])}},{key:"reset",value:function(){}},{key:"setPosition",value:function(t){}},{key:"getPosition",value:function(){return 0}},{key:"triggerCallback",value:function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach((function(t){return t()})),e.length=0}}]),t}(),Qf=function(){function t(e){var n=this;_(this,t),this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=e;var i=0,r=0,a=0,o=this.players.length;0==o?Zf((function(){return n._onFinish()})):this.players.forEach((function(t){t.onDone((function(){++i==o&&n._onFinish()})),t.onDestroy((function(){++r==o&&n._onDestroy()})),t.onStart((function(){++a==o&&n._onStart()}))})),this.totalTime=this.players.reduce((function(t,e){return Math.max(t,e.totalTime)}),0)}return b(t,[{key:"_onFinish",value:function(){this._finished||(this._finished=!0,this._onDoneFns.forEach((function(t){return t()})),this._onDoneFns=[])}},{key:"init",value:function(){this.players.forEach((function(t){return t.init()}))}},{key:"onStart",value:function(t){this._onStartFns.push(t)}},{key:"_onStart",value:function(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach((function(t){return t()})),this._onStartFns=[])}},{key:"onDone",value:function(t){this._onDoneFns.push(t)}},{key:"onDestroy",value:function(t){this._onDestroyFns.push(t)}},{key:"hasStarted",value:function(){return this._started}},{key:"play",value:function(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach((function(t){return t.play()}))}},{key:"pause",value:function(){this.players.forEach((function(t){return t.pause()}))}},{key:"restart",value:function(){this.players.forEach((function(t){return t.restart()}))}},{key:"finish",value:function(){this._onFinish(),this.players.forEach((function(t){return t.finish()}))}},{key:"destroy",value:function(){this._onDestroy()}},{key:"_onDestroy",value:function(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach((function(t){return t.destroy()})),this._onDestroyFns.forEach((function(t){return t()})),this._onDestroyFns=[])}},{key:"reset",value:function(){this.players.forEach((function(t){return t.reset()})),this._destroyed=!1,this._finished=!1,this._started=!1}},{key:"setPosition",value:function(t){var e=t*this.totalTime;this.players.forEach((function(t){var n=t.totalTime?Math.min(1,e/t.totalTime):1;t.setPosition(n)}))}},{key:"getPosition",value:function(){var t=0;return this.players.forEach((function(e){var n=e.getPosition();t=Math.min(n,t)})),t}},{key:"beforeDestroy",value:function(){this.players.forEach((function(t){t.beforeDestroy&&t.beforeDestroy()}))}},{key:"triggerCallback",value:function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach((function(t){return t()})),e.length=0}}]),t}();function Xf(){return"undefined"!=typeof process&&"[object process]"==={}.toString.call(process)}function tp(t){switch(t.length){case 0:return new $f;case 1:return t[0];default:return new Qf(t)}}function ep(t,e,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},o=[],s=[],l=-1,u=null;if(i.forEach((function(t){var n=t.offset,i=n==l,c=i&&u||{};Object.keys(t).forEach((function(n){var i=n,s=t[n];if("offset"!==n)switch(i=e.normalizePropertyName(i,o),s){case"!":s=r[n];break;case"*":s=a[n];break;default:s=e.normalizeStyleValue(n,i,s,o)}c[i]=s})),i||s.push(c),u=c,l=n})),o.length){var c="\n - ";throw new Error("Unable to animate due to the following errors:".concat(c).concat(o.join(c)))}return s}function np(t,e,n,i){switch(e){case"start":t.onStart((function(){return i(n&&ip(n,"start",t))}));break;case"done":t.onDone((function(){return i(n&&ip(n,"done",t))}));break;case"destroy":t.onDestroy((function(){return i(n&&ip(n,"destroy",t))}))}}function ip(t,e,n){var i=n.totalTime,r=rp(t.element,t.triggerName,t.fromState,t.toState,e||t.phaseName,null==i?t.totalTime:i,!!n.disabled),a=t._data;return null!=a&&(r._data=a),r}function rp(t,e,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"",a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,o=arguments.length>6?arguments[6]:void 0;return{element:t,triggerName:e,fromState:n,toState:i,phaseName:r,totalTime:a,disabled:!!o}}function ap(t,e,n){var i;return t instanceof Map?(i=t.get(e))||t.set(e,i=n):(i=t[e])||(i=t[e]=n),i}function op(t){var e=t.indexOf(":");return[t.substring(1,e),t.substr(e+1)]}var sp=function(t,e){return!1},lp=function(t,e){return!1},up=function(t,e,n){return[]},cp=Xf();(cp||"undefined"!=typeof Element)&&(sp=function(t,e){return t.contains(e)},lp=function(){if(cp||Element.prototype.matches)return function(t,e){return t.matches(e)};var t=Element.prototype,e=t.matchesSelector||t.mozMatchesSelector||t.msMatchesSelector||t.oMatchesSelector||t.webkitMatchesSelector;return e?function(t,n){return e.apply(t,[n])}:lp}(),up=function(t,e,n){var i=[];if(n)i.push.apply(i,u(t.querySelectorAll(e)));else{var r=t.querySelector(e);r&&i.push(r)}return i});var dp=null,hp=!1;function fp(t){dp||(dp=("undefined"!=typeof document?document.body:null)||{},hp=!!dp.style&&"WebkitAppearance"in dp.style);var e=!0;return dp.style&&!function(t){return"ebkit"==t.substring(1,6)}(t)&&!(e=t in dp.style)&&hp&&(e="Webkit"+t.charAt(0).toUpperCase()+t.substr(1)in dp.style),e}var pp=lp,mp=sp,gp=up;function vp(t){var e={};return Object.keys(t).forEach((function(n){var i=n.replace(/([a-z])([A-Z])/g,"$1-$2");e[i]=t[n]})),e}var _p=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"validateStyleProperty",value:function(t){return fp(t)}},{key:"matchesElement",value:function(t,e){return pp(t,e)}},{key:"containsElement",value:function(t,e){return mp(t,e)}},{key:"query",value:function(t,e,n){return gp(t,e,n)}},{key:"computeStyle",value:function(t,e,n){return n||""}},{key:"animate",value:function(t,e,n,i,r){return new $f(n,i)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),yp=function(){var t=function t(){_(this,t)};return t.NOOP=new _p,t}();function bp(t){if("number"==typeof t)return t;var e=t.match(/^(-?[\.\d]+)(m?s)/);return!e||e.length<2?0:kp(parseFloat(e[1]),e[2])}function kp(t,e){switch(e){case"s":return 1e3*t;default:return t}}function wp(t,e,n){return t.hasOwnProperty("duration")?t:function(t,e,n){var i,r=0,a="";if("string"==typeof t){var o=t.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===o)return e.push('The provided timing value "'.concat(t,'" is invalid.')),{duration:0,delay:0,easing:""};i=kp(parseFloat(o[1]),o[2]);var s=o[3];null!=s&&(r=kp(parseFloat(s),o[4]));var l=o[5];l&&(a=l)}else i=t;if(!n){var u=!1,c=e.length;i<0&&(e.push("Duration values below 0 are not allowed for this animation step."),u=!0),r<0&&(e.push("Delay values below 0 are not allowed for this animation step."),u=!0),u&&e.splice(c,0,'The provided timing value "'.concat(t,'" is invalid.'))}return{duration:i,delay:r,easing:a}}(t,e,n)}function Mp(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(t).forEach((function(n){e[n]=t[n]})),e}function Sp(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(e)for(var i in t)n[i]=t[i];else Mp(t,n);return n}function xp(t,e,n){return n?e+":"+n+";":""}function Cp(t){for(var e="",n=0;n *";case":leave":return"* => void";case":increment":return function(t,e){return parseFloat(e)>parseFloat(t)};case":decrement":return function(t,e){return parseFloat(e) *"}}(t,n);if("function"==typeof i)return void e.push(i);t=i}var r=t.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==r||r.length<4)return n.push('The provided transition expression "'.concat(t,'" is not supported')),e;var a=r[1],o=r[2],s=r[3];e.push(Vp(a,s)),"<"!=o[0]||"*"==a&&"*"==s||e.push(Vp(s,a))}(t,r,i)})):r.push(n),r),animation:a,queryCount:e.queryCount,depCount:e.depCount,options:Kp(t.options)}}},{key:"visitSequence",value:function(t,e){var n=this;return{type:2,steps:t.steps.map((function(t){return Np(n,t,e)})),options:Kp(t.options)}}},{key:"visitGroup",value:function(t,e){var n=this,i=e.currentTime,r=0,a=t.steps.map((function(t){e.currentTime=i;var a=Np(n,t,e);return r=Math.max(r,e.currentTime),a}));return e.currentTime=r,{type:3,steps:a,options:Kp(t.options)}}},{key:"visitAnimate",value:function(t,e){var n,i=function(t,e){var n=null;if(t.hasOwnProperty("duration"))n=t;else if("number"==typeof t)return Jp(wp(t,e).duration,0,"");var i=t;if(i.split(/\s+/).some((function(t){return"{"==t.charAt(0)&&"{"==t.charAt(1)}))){var r=Jp(0,0,"");return r.dynamic=!0,r.strValue=i,r}return Jp((n=n||wp(i,e)).duration,n.delay,n.easing)}(t.timings,e.errors);e.currentAnimateTimings=i;var r=t.styles?t.styles:Wf({});if(5==r.type)n=this.visitKeyframes(r,e);else{var a=t.styles,o=!1;if(!a){o=!0;var s={};i.easing&&(s.easing=i.easing),a=Wf(s)}e.currentTime+=i.duration+i.delay;var l=this.visitStyle(a,e);l.isEmptyStep=o,n=l}return e.currentAnimateTimings=null,{type:4,timings:i,style:n,options:null}}},{key:"visitStyle",value:function(t,e){var n=this._makeStyleAst(t,e);return this._validateStyleAst(n,e),n}},{key:"_makeStyleAst",value:function(t,e){var n=[];Array.isArray(t.styles)?t.styles.forEach((function(t){"string"==typeof t?"*"==t?n.push(t):e.errors.push("The provided style string value ".concat(t," is not allowed.")):n.push(t)})):n.push(t.styles);var i=!1,r=null;return n.forEach((function(t){if(Gp(t)){var e=t,n=e.easing;if(n&&(r=n,delete e.easing),!i)for(var a in e)if(e[a].toString().indexOf("{{")>=0){i=!0;break}}})),{type:6,styles:n,easing:r,offset:t.offset,containsDynamicStyles:i,options:null}}},{key:"_validateStyleAst",value:function(t,e){var n=this,i=e.currentAnimateTimings,r=e.currentTime,a=e.currentTime;i&&a>0&&(a-=i.duration+i.delay),t.styles.forEach((function(t){"string"!=typeof t&&Object.keys(t).forEach((function(i){if(n._driver.validateStyleProperty(i)){var o,s,l,u=e.collectedStyles[e.currentQuerySelector],c=u[i],d=!0;c&&(a!=r&&a>=c.startTime&&r<=c.endTime&&(e.errors.push('The CSS property "'.concat(i,'" that exists between the times of "').concat(c.startTime,'ms" and "').concat(c.endTime,'ms" is also being animated in a parallel animation between the times of "').concat(a,'ms" and "').concat(r,'ms"')),d=!1),a=c.startTime),d&&(u[i]={startTime:a,endTime:r}),e.options&&(o=e.errors,s=e.options.params||{},(l=Pp(t[i])).length&&l.forEach((function(t){s.hasOwnProperty(t)||o.push("Unable to resolve the local animation param ".concat(t," in the given list of values"))})))}else e.errors.push('The provided animation property "'.concat(i,'" is not a supported CSS property for animations'))}))}))}},{key:"visitKeyframes",value:function(t,e){var n=this,i={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push("keyframes() must be placed inside of a call to animate()"),i;var r=0,a=[],o=!1,s=!1,l=0,u=t.steps.map((function(t){var i=n._makeStyleAst(t,e),u=null!=i.offset?i.offset:function(t){if("string"==typeof t)return null;var e=null;if(Array.isArray(t))t.forEach((function(t){if(Gp(t)&&t.hasOwnProperty("offset")){var n=t;e=parseFloat(n.offset),delete n.offset}}));else if(Gp(t)&&t.hasOwnProperty("offset")){var n=t;e=parseFloat(n.offset),delete n.offset}return e}(i.styles),c=0;return null!=u&&(r++,c=i.offset=u),s=s||c<0||c>1,o=o||c0&&r0?r==h?1:d*r:a[r],s=o*m;e.currentTime=f+p.delay+s,p.duration=s,n._validateStyleAst(t,e),t.offset=o,i.styles.push(t)})),i}},{key:"visitReference",value:function(t,e){return{type:8,animation:Np(this,Tp(t.animation),e),options:Kp(t.options)}}},{key:"visitAnimateChild",value:function(t,e){return e.depCount++,{type:9,options:Kp(t.options)}}},{key:"visitAnimateRef",value:function(t,e){return{type:10,animation:this.visitReference(t.animation,e),options:Kp(t.options)}}},{key:"visitQuery",value:function(t,e){var n=e.currentQuerySelector,i=t.options||{};e.queryCount++,e.currentQuery=t;var r=l(function(t){var e=!!t.split(/\s*,\s*/).find((function(t){return":self"==t}));return e&&(t=t.replace(zp,"")),[t=t.replace(/@\*/g,".ng-trigger").replace(/@\w+/g,(function(t){return".ng-trigger-"+t.substr(1)})).replace(/:animating/g,".ng-animating"),e]}(t.selector),2),a=r[0],o=r[1];e.currentQuerySelector=n.length?n+" "+a:a,ap(e.collectedStyles,e.currentQuerySelector,{});var s=Np(this,Tp(t.animation),e);return e.currentQuery=null,e.currentQuerySelector=n,{type:11,selector:a,limit:i.limit||0,optional:!!i.optional,includeSelf:o,animation:s,originalSelector:t.selector,options:Kp(t.options)}}},{key:"visitStagger",value:function(t,e){e.currentQuery||e.errors.push("stagger() can only be used inside of query()");var n="full"===t.timings?{duration:0,delay:0,easing:"full"}:wp(t.timings,e.errors,!0);return{type:12,animation:Np(this,Tp(t.animation),e),timings:n,options:null}}}]),t}(),qp=function t(e){_(this,t),this.errors=e,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles={},this.options=null};function Gp(t){return!Array.isArray(t)&&"object"==typeof t}function Kp(t){var e;return t?(t=Mp(t)).params&&(t.params=(e=t.params)?Mp(e):null):t={},t}function Jp(t,e,n){return{duration:t,delay:e,easing:n}}function Zp(t,e,n,i,r,a){var o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,s=arguments.length>7&&void 0!==arguments[7]&&arguments[7];return{type:1,element:t,keyframes:e,preStyleProps:n,postStyleProps:i,duration:r,delay:a,totalTime:r+a,easing:o,subTimeline:s}}var $p=function(){function t(){_(this,t),this._map=new Map}return b(t,[{key:"consume",value:function(t){var e=this._map.get(t);return e?this._map.delete(t):e=[],e}},{key:"append",value:function(t,e){var n,i=this._map.get(t);i||this._map.set(t,i=[]),(n=i).push.apply(n,u(e))}},{key:"has",value:function(t){return this._map.has(t)}},{key:"clear",value:function(){this._map.clear()}}]),t}(),Qp=new RegExp(":enter","g"),Xp=new RegExp(":leave","g");function tm(t,e,n,i,r){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},s=arguments.length>7?arguments[7]:void 0,l=arguments.length>8?arguments[8]:void 0,u=arguments.length>9&&void 0!==arguments[9]?arguments[9]:[];return(new em).buildKeyframes(t,e,n,i,r,a,o,s,l,u)}var em=function(){function t(){_(this,t)}return b(t,[{key:"buildKeyframes",value:function(t,e,n,i,r,a,o,s,l){var u=arguments.length>9&&void 0!==arguments[9]?arguments[9]:[];l=l||new $p;var c=new im(t,e,l,i,r,u,[]);c.options=s,c.currentTimeline.setStyles([a],null,c.errors,s),Np(this,n,c);var d=c.timelines.filter((function(t){return t.containsAnimation()}));if(d.length&&Object.keys(o).length){var h=d[d.length-1];h.allowOnlyTimelineStyles()||h.setStyles([o],null,c.errors,s)}return d.length?d.map((function(t){return t.buildKeyframes()})):[Zp(e,[],[],[],0,0,"",!1)]}},{key:"visitTrigger",value:function(t,e){}},{key:"visitState",value:function(t,e){}},{key:"visitTransition",value:function(t,e){}},{key:"visitAnimateChild",value:function(t,e){var n=e.subInstructions.consume(e.element);if(n){var i=e.createSubContext(t.options),r=e.currentTimeline.currentTime,a=this._visitSubInstructions(n,i,i.options);r!=a&&e.transformIntoNewTimeline(a)}e.previousNode=t}},{key:"visitAnimateRef",value:function(t,e){var n=e.createSubContext(t.options);n.transformIntoNewTimeline(),this.visitReference(t.animation,n),e.transformIntoNewTimeline(n.currentTimeline.currentTime),e.previousNode=t}},{key:"_visitSubInstructions",value:function(t,e,n){var i=e.currentTimeline.currentTime,r=null!=n.duration?bp(n.duration):null,a=null!=n.delay?bp(n.delay):null;return 0!==r&&t.forEach((function(t){var n=e.appendInstructionToTimeline(t,r,a);i=Math.max(i,n.duration+n.delay)})),i}},{key:"visitReference",value:function(t,e){e.updateOptions(t.options,!0),Np(this,t.animation,e),e.previousNode=t}},{key:"visitSequence",value:function(t,e){var n=this,i=e.subContextCount,r=e,a=t.options;if(a&&(a.params||a.delay)&&((r=e.createSubContext(a)).transformIntoNewTimeline(),null!=a.delay)){6==r.previousNode.type&&(r.currentTimeline.snapshotCurrentStyles(),r.previousNode=nm);var o=bp(a.delay);r.delayNextStep(o)}t.steps.length&&(t.steps.forEach((function(t){return Np(n,t,r)})),r.currentTimeline.applyStylesToKeyframe(),r.subContextCount>i&&r.transformIntoNewTimeline()),e.previousNode=t}},{key:"visitGroup",value:function(t,e){var n=this,i=[],r=e.currentTimeline.currentTime,a=t.options&&t.options.delay?bp(t.options.delay):0;t.steps.forEach((function(o){var s=e.createSubContext(t.options);a&&s.delayNextStep(a),Np(n,o,s),r=Math.max(r,s.currentTimeline.currentTime),i.push(s.currentTimeline)})),i.forEach((function(t){return e.currentTimeline.mergeTimelineCollectedStyles(t)})),e.transformIntoNewTimeline(r),e.previousNode=t}},{key:"_visitTiming",value:function(t,e){if(t.dynamic){var n=t.strValue;return wp(e.params?Op(n,e.params,e.errors):n,e.errors)}return{duration:t.duration,delay:t.delay,easing:t.easing}}},{key:"visitAnimate",value:function(t,e){var n=e.currentAnimateTimings=this._visitTiming(t.timings,e),i=e.currentTimeline;n.delay&&(e.incrementTime(n.delay),i.snapshotCurrentStyles());var r=t.style;5==r.type?this.visitKeyframes(r,e):(e.incrementTime(n.duration),this.visitStyle(r,e),i.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=t}},{key:"visitStyle",value:function(t,e){var n=e.currentTimeline,i=e.currentAnimateTimings;!i&&n.getCurrentStyleProperties().length&&n.forwardFrame();var r=i&&i.easing||t.easing;t.isEmptyStep?n.applyEmptyStep(r):n.setStyles(t.styles,r,e.errors,e.options),e.previousNode=t}},{key:"visitKeyframes",value:function(t,e){var n=e.currentAnimateTimings,i=e.currentTimeline.duration,r=n.duration,a=e.createSubContext().currentTimeline;a.easing=n.easing,t.styles.forEach((function(t){a.forwardTime((t.offset||0)*r),a.setStyles(t.styles,t.easing,e.errors,e.options),a.applyStylesToKeyframe()})),e.currentTimeline.mergeTimelineCollectedStyles(a),e.transformIntoNewTimeline(i+r),e.previousNode=t}},{key:"visitQuery",value:function(t,e){var n=this,i=e.currentTimeline.currentTime,r=t.options||{},a=r.delay?bp(r.delay):0;a&&(6===e.previousNode.type||0==i&&e.currentTimeline.getCurrentStyleProperties().length)&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=nm);var o=i,s=e.invokeQuery(t.selector,t.originalSelector,t.limit,t.includeSelf,!!r.optional,e.errors);e.currentQueryTotal=s.length;var l=null;s.forEach((function(i,r){e.currentQueryIndex=r;var s=e.createSubContext(t.options,i);a&&s.delayNextStep(a),i===e.element&&(l=s.currentTimeline),Np(n,t.animation,s),s.currentTimeline.applyStylesToKeyframe(),o=Math.max(o,s.currentTimeline.currentTime)})),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(o),l&&(e.currentTimeline.mergeTimelineCollectedStyles(l),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=t}},{key:"visitStagger",value:function(t,e){var n=e.parentContext,i=e.currentTimeline,r=t.timings,a=Math.abs(r.duration),o=a*(e.currentQueryTotal-1),s=a*e.currentQueryIndex;switch(r.duration<0?"reverse":r.easing){case"reverse":s=o-s;break;case"full":s=n.currentStaggerTime}var l=e.currentTimeline;s&&l.delayNextStep(s);var u=l.currentTime;Np(this,t.animation,e),e.previousNode=t,n.currentStaggerTime=i.currentTime-u+(i.startTime-n.currentTimeline.startTime)}}]),t}(),nm={},im=function(){function t(e,n,i,r,a,o,s,l){_(this,t),this._driver=e,this.element=n,this.subInstructions=i,this._enterClassName=r,this._leaveClassName=a,this.errors=o,this.timelines=s,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=nm,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=l||new rm(this._driver,n,0),s.push(this.currentTimeline)}return b(t,[{key:"updateOptions",value:function(t,e){var n=this;if(t){var i=t,r=this.options;null!=i.duration&&(r.duration=bp(i.duration)),null!=i.delay&&(r.delay=bp(i.delay));var a=i.params;if(a){var o=r.params;o||(o=this.options.params={}),Object.keys(a).forEach((function(t){e&&o.hasOwnProperty(t)||(o[t]=Op(a[t],o,n.errors))}))}}}},{key:"_copyOptions",value:function(){var t={};if(this.options){var e=this.options.params;if(e){var n=t.params={};Object.keys(e).forEach((function(t){n[t]=e[t]}))}}return t}},{key:"createSubContext",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,n=arguments.length>1?arguments[1]:void 0,i=arguments.length>2?arguments[2]:void 0,r=n||this.element,a=new t(this._driver,r,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(r,i||0));return a.previousNode=this.previousNode,a.currentAnimateTimings=this.currentAnimateTimings,a.options=this._copyOptions(),a.updateOptions(e),a.currentQueryIndex=this.currentQueryIndex,a.currentQueryTotal=this.currentQueryTotal,a.parentContext=this,this.subContextCount++,a}},{key:"transformIntoNewTimeline",value:function(t){return this.previousNode=nm,this.currentTimeline=this.currentTimeline.fork(this.element,t),this.timelines.push(this.currentTimeline),this.currentTimeline}},{key:"appendInstructionToTimeline",value:function(t,e,n){var i={duration:null!=e?e:t.duration,delay:this.currentTimeline.currentTime+(null!=n?n:0)+t.delay,easing:""},r=new am(this._driver,t.element,t.keyframes,t.preStyleProps,t.postStyleProps,i,t.stretchStartingKeyframe);return this.timelines.push(r),i}},{key:"incrementTime",value:function(t){this.currentTimeline.forwardTime(this.currentTimeline.duration+t)}},{key:"delayNextStep",value:function(t){t>0&&this.currentTimeline.delayNextStep(t)}},{key:"invokeQuery",value:function(t,e,n,i,r,a){var o=[];if(i&&o.push(this.element),t.length>0){t=(t=t.replace(Qp,"."+this._enterClassName)).replace(Xp,"."+this._leaveClassName);var s=this._driver.query(this.element,t,1!=n);0!==n&&(s=n<0?s.slice(s.length+n,s.length):s.slice(0,n)),o.push.apply(o,u(s))}return r||0!=o.length||a.push('`query("'.concat(e,'")` returned zero elements. (Use `query("').concat(e,'", { optional: true })` if you wish to allow this.)')),o}},{key:"params",get:function(){return this.options.params}}]),t}(),rm=function(){function t(e,n,i,r){_(this,t),this._driver=e,this.element=n,this.startTime=i,this._elementTimelineStylesLookup=r,this.duration=0,this._previousKeyframe={},this._currentKeyframe={},this._keyframes=new Map,this._styleSummary={},this._pendingStyles={},this._backFill={},this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._localTimelineStyles=Object.create(this._backFill,{}),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(n),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(n,this._localTimelineStyles)),this._loadKeyframe()}return b(t,[{key:"containsAnimation",value:function(){switch(this._keyframes.size){case 0:return!1;case 1:return this.getCurrentStyleProperties().length>0;default:return!0}}},{key:"getCurrentStyleProperties",value:function(){return Object.keys(this._currentKeyframe)}},{key:"delayNextStep",value:function(t){var e=1==this._keyframes.size&&Object.keys(this._pendingStyles).length;this.duration||e?(this.forwardTime(this.currentTime+t),e&&this.snapshotCurrentStyles()):this.startTime+=t}},{key:"fork",value:function(e,n){return this.applyStylesToKeyframe(),new t(this._driver,e,n||this.currentTime,this._elementTimelineStylesLookup)}},{key:"_loadKeyframe",value:function(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=Object.create(this._backFill,{}),this._keyframes.set(this.duration,this._currentKeyframe))}},{key:"forwardFrame",value:function(){this.duration+=1,this._loadKeyframe()}},{key:"forwardTime",value:function(t){this.applyStylesToKeyframe(),this.duration=t,this._loadKeyframe()}},{key:"_updateStyle",value:function(t,e){this._localTimelineStyles[t]=e,this._globalTimelineStyles[t]=e,this._styleSummary[t]={time:this.currentTime,value:e}}},{key:"allowOnlyTimelineStyles",value:function(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}},{key:"applyEmptyStep",value:function(t){var e=this;t&&(this._previousKeyframe.easing=t),Object.keys(this._globalTimelineStyles).forEach((function(t){e._backFill[t]=e._globalTimelineStyles[t]||"*",e._currentKeyframe[t]="*"})),this._currentEmptyStepKeyframe=this._currentKeyframe}},{key:"setStyles",value:function(t,e,n,i){var r=this;e&&(this._previousKeyframe.easing=e);var a=i&&i.params||{},o=function(t,e){var n,i={};return t.forEach((function(t){"*"===t?(n=n||Object.keys(e)).forEach((function(t){i[t]="*"})):Sp(t,!1,i)})),i}(t,this._globalTimelineStyles);Object.keys(o).forEach((function(t){var e=Op(o[t],a,n);r._pendingStyles[t]=e,r._localTimelineStyles.hasOwnProperty(t)||(r._backFill[t]=r._globalTimelineStyles.hasOwnProperty(t)?r._globalTimelineStyles[t]:"*"),r._updateStyle(t,e)}))}},{key:"applyStylesToKeyframe",value:function(){var t=this,e=this._pendingStyles,n=Object.keys(e);0!=n.length&&(this._pendingStyles={},n.forEach((function(n){t._currentKeyframe[n]=e[n]})),Object.keys(this._localTimelineStyles).forEach((function(e){t._currentKeyframe.hasOwnProperty(e)||(t._currentKeyframe[e]=t._localTimelineStyles[e])})))}},{key:"snapshotCurrentStyles",value:function(){var t=this;Object.keys(this._localTimelineStyles).forEach((function(e){var n=t._localTimelineStyles[e];t._pendingStyles[e]=n,t._updateStyle(e,n)}))}},{key:"getFinalKeyframe",value:function(){return this._keyframes.get(this.duration)}},{key:"mergeTimelineCollectedStyles",value:function(t){var e=this;Object.keys(t._styleSummary).forEach((function(n){var i=e._styleSummary[n],r=t._styleSummary[n];(!i||r.time>i.time)&&e._updateStyle(n,r.value)}))}},{key:"buildKeyframes",value:function(){var t=this;this.applyStylesToKeyframe();var e=new Set,n=new Set,i=1===this._keyframes.size&&0===this.duration,r=[];this._keyframes.forEach((function(a,o){var s=Sp(a,!0);Object.keys(s).forEach((function(t){var i=s[t];"!"==i?e.add(t):"*"==i&&n.add(t)})),i||(s.offset=o/t.duration),r.push(s)}));var a=e.size?Ap(e.values()):[],o=n.size?Ap(n.values()):[];if(i){var s=r[0],l=Mp(s);s.offset=0,l.offset=1,r=[s,l]}return Zp(this.element,r,a,o,this.duration,this.startTime,this.easing,!1)}},{key:"currentTime",get:function(){return this.startTime+this.duration}},{key:"properties",get:function(){var t=[];for(var e in this._currentKeyframe)t.push(e);return t}}]),t}(),am=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s){var l,u=arguments.length>6&&void 0!==arguments[6]&&arguments[6];return _(this,n),(l=e.call(this,t,i,s.delay)).element=i,l.keyframes=r,l.preStyleProps=a,l.postStyleProps=o,l._stretchStartingKeyframe=u,l.timings={duration:s.duration,delay:s.delay,easing:s.easing},l}return b(n,[{key:"containsAnimation",value:function(){return this.keyframes.length>1}},{key:"buildKeyframes",value:function(){var t=this.keyframes,e=this.timings,n=e.delay,i=e.duration,r=e.easing;if(this._stretchStartingKeyframe&&n){var a=[],o=i+n,s=n/o,l=Sp(t[0],!1);l.offset=0,a.push(l);var u=Sp(t[0],!1);u.offset=om(s),a.push(u);for(var c=t.length-1,d=1;d<=c;d++){var h=Sp(t[d],!1);h.offset=om((n+h.offset*i)/o),a.push(h)}i=o,n=0,r="",t=a}return Zp(this.element,t,this.preStyleProps,this.postStyleProps,i,n,r,!0)}}]),n}(rm);function om(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=Math.pow(10,e-1);return Math.round(t*n)/n}var sm=function t(){_(this,t)},lm=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"normalizePropertyName",value:function(t,e){return Yp(t)}},{key:"normalizeStyleValue",value:function(t,e,n,i){var r="",a=n.toString().trim();if(um[e]&&0!==n&&"0"!==n)if("number"==typeof n)r="px";else{var o=n.match(/^[+-]?[\d\.]+([a-z]*)$/);o&&0==o[1].length&&i.push("Please provide a CSS unit value for ".concat(t,":").concat(n))}return a+r}}]),n}(sm),um=function(){return t="width,height,minWidth,minHeight,maxWidth,maxHeight,left,top,bottom,right,fontSize,outlineWidth,outlineOffset,paddingTop,paddingLeft,paddingBottom,paddingRight,marginTop,marginLeft,marginBottom,marginRight,borderRadius,borderWidth,borderTopWidth,borderLeftWidth,borderRightWidth,borderBottomWidth,textIndent,perspective".split(","),e={},t.forEach((function(t){return e[t]=!0})),e;var t,e}();function cm(t,e,n,i,r,a,o,s,l,u,c,d,h){return{type:0,element:t,triggerName:e,isRemovalTransition:r,fromState:n,fromStyles:a,toState:i,toStyles:o,timelines:s,queriedElements:l,preStyleProps:u,postStyleProps:c,totalTime:d,errors:h}}var dm={},hm=function(){function t(e,n,i){_(this,t),this._triggerName=e,this.ast=n,this._stateStyles=i}return b(t,[{key:"match",value:function(t,e,n,i){return function(t,e,n,i,r){return t.some((function(t){return t(e,n,i,r)}))}(this.ast.matchers,t,e,n,i)}},{key:"buildStyles",value:function(t,e,n){var i=this._stateStyles["*"],r=this._stateStyles[t],a=i?i.buildStyles(e,n):{};return r?r.buildStyles(e,n):a}},{key:"build",value:function(t,e,n,i,r,a,o,s,l,u){var c=[],d=this.ast.options&&this.ast.options.params||dm,h=this.buildStyles(n,o&&o.params||dm,c),f=s&&s.params||dm,p=this.buildStyles(i,f,c),m=new Set,g=new Map,v=new Map,_="void"===i,y={params:Object.assign(Object.assign({},d),f)},b=u?[]:tm(t,e,this.ast.animation,r,a,h,p,y,l,c),k=0;if(b.forEach((function(t){k=Math.max(t.duration+t.delay,k)})),c.length)return cm(e,this._triggerName,n,i,_,h,p,[],[],g,v,k,c);b.forEach((function(t){var n=t.element,i=ap(g,n,{});t.preStyleProps.forEach((function(t){return i[t]=!0}));var r=ap(v,n,{});t.postStyleProps.forEach((function(t){return r[t]=!0})),n!==e&&m.add(n)}));var w=Ap(m.values());return cm(e,this._triggerName,n,i,_,h,p,b,w,g,v,k)}}]),t}(),fm=function(){function t(e,n){_(this,t),this.styles=e,this.defaultParams=n}return b(t,[{key:"buildStyles",value:function(t,e){var n={},i=Mp(this.defaultParams);return Object.keys(t).forEach((function(e){var n=t[e];null!=n&&(i[e]=n)})),this.styles.styles.forEach((function(t){if("string"!=typeof t){var r=t;Object.keys(r).forEach((function(t){var a=r[t];a.length>1&&(a=Op(a,i,e)),n[t]=a}))}})),n}}]),t}(),pm=function(){function t(e,n){var i=this;_(this,t),this.name=e,this.ast=n,this.transitionFactories=[],this.states={},n.states.forEach((function(t){i.states[t.name]=new fm(t.style,t.options&&t.options.params||{})})),mm(this.states,"true","1"),mm(this.states,"false","0"),n.transitions.forEach((function(t){i.transitionFactories.push(new hm(e,t,i.states))})),this.fallbackTransition=new hm(e,{type:1,animation:{type:2,steps:[],options:null},matchers:[function(t,e){return!0}],options:null,queryCount:0,depCount:0},this.states)}return b(t,[{key:"matchTransition",value:function(t,e,n,i){return this.transitionFactories.find((function(r){return r.match(t,e,n,i)}))||null}},{key:"matchStyles",value:function(t,e,n){return this.fallbackTransition.buildStyles(t,e,n)}},{key:"containsQueries",get:function(){return this.ast.queryCount>0}}]),t}();function mm(t,e,n){t.hasOwnProperty(e)?t.hasOwnProperty(n)||(t[n]=t[e]):t.hasOwnProperty(n)&&(t[e]=t[n])}var gm=new $p,vm=function(){function t(e,n,i){_(this,t),this.bodyNode=e,this._driver=n,this._normalizer=i,this._animations={},this._playersById={},this.players=[]}return b(t,[{key:"register",value:function(t,e){var n=[],i=Wp(this._driver,e,n);if(n.length)throw new Error("Unable to build the animation due to the following errors: ".concat(n.join("\n")));this._animations[t]=i}},{key:"_buildPlayer",value:function(t,e,n){var i=t.element,r=ep(this._driver,this._normalizer,i,t.keyframes,e,n);return this._driver.animate(i,r,t.duration,t.delay,t.easing,[],!0)}},{key:"create",value:function(t,e){var n,i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=[],o=this._animations[t],s=new Map;if(o?(n=tm(this._driver,e,o,"ng-enter","ng-leave",{},{},r,gm,a)).forEach((function(t){var e=ap(s,t.element,{});t.postStyleProps.forEach((function(t){return e[t]=null}))})):(a.push("The requested animation doesn't exist or has already been destroyed"),n=[]),a.length)throw new Error("Unable to create the animation due to the following errors: ".concat(a.join("\n")));s.forEach((function(t,e){Object.keys(t).forEach((function(n){t[n]=i._driver.computeStyle(e,n,"*")}))}));var l=n.map((function(t){var e=s.get(t.element);return i._buildPlayer(t,{},e)})),u=tp(l);return this._playersById[t]=u,u.onDestroy((function(){return i.destroy(t)})),this.players.push(u),u}},{key:"destroy",value:function(t){var e=this._getPlayer(t);e.destroy(),delete this._playersById[t];var n=this.players.indexOf(e);n>=0&&this.players.splice(n,1)}},{key:"_getPlayer",value:function(t){var e=this._playersById[t];if(!e)throw new Error("Unable to find the timeline player referenced by ".concat(t));return e}},{key:"listen",value:function(t,e,n,i){var r=rp(e,"","","");return np(this._getPlayer(t),n,r,i),function(){}}},{key:"command",value:function(t,e,n,i){if("register"!=n)if("create"!=n){var r=this._getPlayer(t);switch(n){case"play":r.play();break;case"pause":r.pause();break;case"reset":r.reset();break;case"restart":r.restart();break;case"finish":r.finish();break;case"init":r.init();break;case"setPosition":r.setPosition(parseFloat(i[0]));break;case"destroy":this.destroy(t)}}else this.create(t,e,i[0]||{});else this.register(t,i[0])}}]),t}(),_m=[],ym={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},bm={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},km=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";_(this,t),this.namespaceId=n;var i=e&&e.hasOwnProperty("value"),r=i?e.value:e;if(this.value=Cm(r),i){var a=Mp(e);delete a.value,this.options=a}else this.options={};this.options.params||(this.options.params={})}return b(t,[{key:"absorbOptions",value:function(t){var e=t.params;if(e){var n=this.options.params;Object.keys(e).forEach((function(t){null==n[t]&&(n[t]=e[t])}))}}},{key:"params",get:function(){return this.options.params}}]),t}(),wm=new km("void"),Mm=function(){function t(e,n,i){_(this,t),this.id=e,this.hostElement=n,this._engine=i,this.players=[],this._triggers={},this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+e,Pm(n,this._hostClassName)}return b(t,[{key:"listen",value:function(t,e,n,i){var r,a=this;if(!this._triggers.hasOwnProperty(e))throw new Error('Unable to listen on the animation trigger event "'.concat(n,'" because the animation trigger "').concat(e,"\" doesn't exist!"));if(null==n||0==n.length)throw new Error('Unable to listen on the animation trigger "'.concat(e,'" because the provided event is undefined!'));if("start"!=(r=n)&&"done"!=r)throw new Error('The provided animation trigger event "'.concat(n,'" for the animation trigger "').concat(e,'" is not supported!'));var o=ap(this._elementListeners,t,[]),s={name:e,phase:n,callback:i};o.push(s);var l=ap(this._engine.statesByElement,t,{});return l.hasOwnProperty(e)||(Pm(t,"ng-trigger"),Pm(t,"ng-trigger-"+e),l[e]=wm),function(){a._engine.afterFlush((function(){var t=o.indexOf(s);t>=0&&o.splice(t,1),a._triggers[e]||delete l[e]}))}}},{key:"register",value:function(t,e){return!this._triggers[t]&&(this._triggers[t]=e,!0)}},{key:"_getTrigger",value:function(t){var e=this._triggers[t];if(!e)throw new Error('The provided animation trigger "'.concat(t,'" has not been registered!'));return e}},{key:"trigger",value:function(t,e,n){var i=this,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this._getTrigger(e),o=new xm(this.id,e,t),s=this._engine.statesByElement.get(t);s||(Pm(t,"ng-trigger"),Pm(t,"ng-trigger-"+e),this._engine.statesByElement.set(t,s={}));var l=s[e],u=new km(n,this.id),c=n&&n.hasOwnProperty("value");!c&&l&&u.absorbOptions(l.options),s[e]=u,l||(l=wm);var d="void"===u.value;if(d||l.value!==u.value){var h=ap(this._engine.playersByElement,t,[]);h.forEach((function(t){t.namespaceId==i.id&&t.triggerName==e&&t.queued&&t.destroy()}));var f=a.matchTransition(l.value,u.value,t,u.params),p=!1;if(!f){if(!r)return;f=a.fallbackTransition,p=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:t,triggerName:e,transition:f,fromState:l,toState:u,player:o,isFallbackTransition:p}),p||(Pm(t,"ng-animate-queued"),o.onStart((function(){Om(t,"ng-animate-queued")}))),o.onDone((function(){var e=i.players.indexOf(o);e>=0&&i.players.splice(e,1);var n=i._engine.playersByElement.get(t);if(n){var r=n.indexOf(o);r>=0&&n.splice(r,1)}})),this.players.push(o),h.push(o),o}if(!Im(l.params,u.params)){var m=[],g=a.matchStyles(l.value,l.params,m),v=a.matchStyles(u.value,u.params,m);m.length?this._engine.reportError(m):this._engine.afterFlush((function(){Lp(t,g),Dp(t,v)}))}}},{key:"deregister",value:function(t){var e=this;delete this._triggers[t],this._engine.statesByElement.forEach((function(e,n){delete e[t]})),this._elementListeners.forEach((function(n,i){e._elementListeners.set(i,n.filter((function(e){return e.name!=t})))}))}},{key:"clearElementCache",value:function(t){this._engine.statesByElement.delete(t),this._elementListeners.delete(t);var e=this._engine.playersByElement.get(t);e&&(e.forEach((function(t){return t.destroy()})),this._engine.playersByElement.delete(t))}},{key:"_signalRemovalForInnerTriggers",value:function(t,e){var n=this,i=this._engine.driver.query(t,".ng-trigger",!0);i.forEach((function(t){if(!t.__ng_removed){var i=n._engine.fetchNamespacesByElement(t);i.size?i.forEach((function(n){return n.triggerLeaveAnimation(t,e,!1,!0)})):n.clearElementCache(t)}})),this._engine.afterFlushAnimationsDone((function(){return i.forEach((function(t){return n.clearElementCache(t)}))}))}},{key:"triggerLeaveAnimation",value:function(t,e,n,i){var r=this,a=this._engine.statesByElement.get(t);if(a){var o=[];if(Object.keys(a).forEach((function(e){if(r._triggers[e]){var n=r.trigger(t,e,"void",i);n&&o.push(n)}})),o.length)return this._engine.markElementAsRemoved(this.id,t,!0,e),n&&tp(o).onDone((function(){return r._engine.processLeaveNode(t)})),!0}return!1}},{key:"prepareLeaveAnimationListeners",value:function(t){var e=this,n=this._elementListeners.get(t);if(n){var i=new Set;n.forEach((function(n){var r=n.name;if(!i.has(r)){i.add(r);var a=e._triggers[r].fallbackTransition,o=e._engine.statesByElement.get(t)[r]||wm,s=new km("void"),l=new xm(e.id,r,t);e._engine.totalQueuedPlayers++,e._queue.push({element:t,triggerName:r,transition:a,fromState:o,toState:s,player:l,isFallbackTransition:!0})}}))}}},{key:"removeNode",value:function(t,e){var n=this,i=this._engine;if(t.childElementCount&&this._signalRemovalForInnerTriggers(t,e),!this.triggerLeaveAnimation(t,e,!0)){var r=!1;if(i.totalAnimations){var a=i.players.length?i.playersByQueriedElement.get(t):[];if(a&&a.length)r=!0;else for(var o=t;o=o.parentNode;)if(i.statesByElement.get(o)){r=!0;break}}if(this.prepareLeaveAnimationListeners(t),r)i.markElementAsRemoved(this.id,t,!1,e);else{var s=t.__ng_removed;s&&s!==ym||(i.afterFlush((function(){return n.clearElementCache(t)})),i.destroyInnerAnimations(t),i._onRemovalComplete(t,e))}}}},{key:"insertNode",value:function(t,e){Pm(t,this._hostClassName)}},{key:"drainQueuedTransitions",value:function(t){var e=this,n=[];return this._queue.forEach((function(i){var r=i.player;if(!r.destroyed){var a=i.element,o=e._elementListeners.get(a);o&&o.forEach((function(e){if(e.name==i.triggerName){var n=rp(a,i.triggerName,i.fromState.value,i.toState.value);n._data=t,np(i.player,e.phase,n,e.callback)}})),r.markedForDestroy?e._engine.afterFlush((function(){r.destroy()})):n.push(i)}})),this._queue=[],n.sort((function(t,n){var i=t.transition.ast.depCount,r=n.transition.ast.depCount;return 0==i||0==r?i-r:e._engine.driver.containsElement(t.element,n.element)?1:-1}))}},{key:"destroy",value:function(t){this.players.forEach((function(t){return t.destroy()})),this._signalRemovalForInnerTriggers(this.hostElement,t)}},{key:"elementContainsData",value:function(t){var e=!1;return this._elementListeners.has(t)&&(e=!0),!!this._queue.find((function(e){return e.element===t}))||e}}]),t}(),Sm=function(){function t(e,n,i){_(this,t),this.bodyNode=e,this.driver=n,this._normalizer=i,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=function(t,e){}}return b(t,[{key:"_onRemovalComplete",value:function(t,e){this.onRemovalComplete(t,e)}},{key:"createNamespace",value:function(t,e){var n=new Mm(t,e,this);return e.parentNode?this._balanceNamespaceList(n,e):(this.newHostElements.set(e,n),this.collectEnterElement(e)),this._namespaceLookup[t]=n}},{key:"_balanceNamespaceList",value:function(t,e){var n=this._namespaceList.length-1;if(n>=0){for(var i=!1,r=n;r>=0;r--)if(this.driver.containsElement(this._namespaceList[r].hostElement,e)){this._namespaceList.splice(r+1,0,t),i=!0;break}i||this._namespaceList.splice(0,0,t)}else this._namespaceList.push(t);return this.namespacesByHostElement.set(e,t),t}},{key:"register",value:function(t,e){var n=this._namespaceLookup[t];return n||(n=this.createNamespace(t,e)),n}},{key:"registerTrigger",value:function(t,e,n){var i=this._namespaceLookup[t];i&&i.register(e,n)&&this.totalAnimations++}},{key:"destroy",value:function(t,e){var n=this;if(t){var i=this._fetchNamespace(t);this.afterFlush((function(){n.namespacesByHostElement.delete(i.hostElement),delete n._namespaceLookup[t];var e=n._namespaceList.indexOf(i);e>=0&&n._namespaceList.splice(e,1)})),this.afterFlushAnimationsDone((function(){return i.destroy(e)}))}}},{key:"_fetchNamespace",value:function(t){return this._namespaceLookup[t]}},{key:"fetchNamespacesByElement",value:function(t){var e=new Set,n=this.statesByElement.get(t);if(n)for(var i=Object.keys(n),r=0;r=0&&this.collectedLeaveElements.splice(a,1)}if(t){var o=this._fetchNamespace(t);o&&o.insertNode(e,n)}i&&this.collectEnterElement(e)}}},{key:"collectEnterElement",value:function(t){this.collectedEnterElements.push(t)}},{key:"markElementAsDisabled",value:function(t,e){e?this.disabledNodes.has(t)||(this.disabledNodes.add(t),Pm(t,"ng-animate-disabled")):this.disabledNodes.has(t)&&(this.disabledNodes.delete(t),Om(t,"ng-animate-disabled"))}},{key:"removeNode",value:function(t,e,n,i){if(Dm(e)){var r=t?this._fetchNamespace(t):null;if(r?r.removeNode(e,i):this.markElementAsRemoved(t,e,!1,i),n){var a=this.namespacesByHostElement.get(e);a&&a.id!==t&&a.removeNode(e,i)}}else this._onRemovalComplete(e,i)}},{key:"markElementAsRemoved",value:function(t,e,n,i){this.collectedLeaveElements.push(e),e.__ng_removed={namespaceId:t,setForRemoval:i,hasAnimation:n,removedBeforeQueried:!1}}},{key:"listen",value:function(t,e,n,i,r){return Dm(e)?this._fetchNamespace(t).listen(e,n,i,r):function(){}}},{key:"_buildInstruction",value:function(t,e,n,i,r){return t.transition.build(this.driver,t.element,t.fromState.value,t.toState.value,n,i,t.fromState.options,t.toState.options,e,r)}},{key:"destroyInnerAnimations",value:function(t){var e=this,n=this.driver.query(t,".ng-trigger",!0);n.forEach((function(t){return e.destroyActiveAnimationsForElement(t)})),0!=this.playersByQueriedElement.size&&(n=this.driver.query(t,".ng-animating",!0)).forEach((function(t){return e.finishActiveQueriedAnimationOnElement(t)}))}},{key:"destroyActiveAnimationsForElement",value:function(t){var e=this.playersByElement.get(t);e&&e.forEach((function(t){t.queued?t.markedForDestroy=!0:t.destroy()}))}},{key:"finishActiveQueriedAnimationOnElement",value:function(t){var e=this.playersByQueriedElement.get(t);e&&e.forEach((function(t){return t.finish()}))}},{key:"whenRenderingDone",value:function(){var t=this;return new Promise((function(e){if(t.players.length)return tp(t.players).onDone((function(){return e()}));e()}))}},{key:"processLeaveNode",value:function(t){var e=this,n=t.__ng_removed;if(n&&n.setForRemoval){if(t.__ng_removed=ym,n.namespaceId){this.destroyInnerAnimations(t);var i=this._fetchNamespace(n.namespaceId);i&&i.clearElementCache(t)}this._onRemovalComplete(t,n.setForRemoval)}this.driver.matchesElement(t,".ng-animate-disabled")&&this.markElementAsDisabled(t,!1),this.driver.query(t,".ng-animate-disabled",!0).forEach((function(t){e.markElementAsDisabled(t,!1)}))}},{key:"flush",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:-1,n=[];if(this.newHostElements.size&&(this.newHostElements.forEach((function(e,n){return t._balanceNamespaceList(e,n)})),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(var i=0;i=0;D--)this._namespaceList[D].drainQueuedTransitions(e).forEach((function(t){var e=t.player,a=t.element;if(x.push(e),n.collectedEnterElements.length){var u=a.__ng_removed;if(u&&u.setForMove)return void e.destroy()}var d=!h||!n.driver.containsElement(h,a),f=M.get(a),p=m.get(a),g=n._buildInstruction(t,i,p,f,d);if(g.errors&&g.errors.length)C.push(g);else{if(d)return e.onStart((function(){return Lp(a,g.fromStyles)})),e.onDestroy((function(){return Dp(a,g.toStyles)})),void r.push(e);if(t.isFallbackTransition)return e.onStart((function(){return Lp(a,g.fromStyles)})),e.onDestroy((function(){return Dp(a,g.toStyles)})),void r.push(e);g.timelines.forEach((function(t){return t.stretchStartingKeyframe=!0})),i.append(a,g.timelines),o.push({instruction:g,player:e,element:a}),g.queriedElements.forEach((function(t){return ap(s,t,[]).push(e)})),g.preStyleProps.forEach((function(t,e){var n=Object.keys(t);if(n.length){var i=l.get(e);i||l.set(e,i=new Set),n.forEach((function(t){return i.add(t)}))}})),g.postStyleProps.forEach((function(t,e){var n=Object.keys(t),i=c.get(e);i||c.set(e,i=new Set),n.forEach((function(t){return i.add(t)}))}))}}));if(C.length){var L=[];C.forEach((function(t){L.push("@".concat(t.triggerName," has failed due to:\n")),t.errors.forEach((function(t){return L.push("- ".concat(t,"\n"))}))})),x.forEach((function(t){return t.destroy()})),this.reportError(L)}var T=new Map,E=new Map;o.forEach((function(t){var e=t.element;i.has(e)&&(E.set(e,e),n._beforeAnimationBuild(t.player.namespaceId,t.instruction,T))})),r.forEach((function(t){var e=t.element;n._getPreviousPlayers(e,!1,t.namespaceId,t.triggerName,null).forEach((function(t){ap(T,e,[]).push(t),t.destroy()}))}));var P=v.filter((function(t){return Ym(t,l,c)})),O=new Map;Tm(O,this.driver,y,c,"*").forEach((function(t){Ym(t,l,c)&&P.push(t)}));var A=new Map;p.forEach((function(t,e){Tm(A,n.driver,new Set(t),l,"!")})),P.forEach((function(t){var e=O.get(t),n=A.get(t);O.set(t,Object.assign(Object.assign({},e),n))}));var I=[],Y=[],F={};o.forEach((function(t){var e=t.element,o=t.player,s=t.instruction;if(i.has(e)){if(d.has(e))return o.onDestroy((function(){return Dp(e,s.toStyles)})),o.disabled=!0,o.overrideTotalTime(s.totalTime),void r.push(o);var l=F;if(E.size>1){for(var u=e,c=[];u=u.parentNode;){var h=E.get(u);if(h){l=h;break}c.push(u)}c.forEach((function(t){return E.set(t,l)}))}var f=n._buildAnimation(o.namespaceId,s,T,a,A,O);if(o.setRealPlayer(f),l===F)I.push(o);else{var p=n.playersByElement.get(l);p&&p.length&&(o.parentPlayer=tp(p)),r.push(o)}}else Lp(e,s.fromStyles),o.onDestroy((function(){return Dp(e,s.toStyles)})),Y.push(o),d.has(e)&&r.push(o)})),Y.forEach((function(t){var e=a.get(t.element);if(e&&e.length){var n=tp(e);t.setRealPlayer(n)}})),r.forEach((function(t){t.parentPlayer?t.syncPlayerEvents(t.parentPlayer):t.destroy()}));for(var R=0;R0?this.driver.animate(t.element,e,t.duration,t.delay,t.easing,n):new $f(t.duration,t.delay)}},{key:"queuedPlayers",get:function(){var t=[];return this._namespaceList.forEach((function(e){e.players.forEach((function(e){e.queued&&t.push(e)}))})),t}}]),t}(),xm=function(){function t(e,n,i){_(this,t),this.namespaceId=e,this.triggerName=n,this.element=i,this._player=new $f,this._containsRealPlayer=!1,this._queuedCallbacks={},this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}return b(t,[{key:"setRealPlayer",value:function(t){var e=this;this._containsRealPlayer||(this._player=t,Object.keys(this._queuedCallbacks).forEach((function(n){e._queuedCallbacks[n].forEach((function(e){return np(t,n,void 0,e)}))})),this._queuedCallbacks={},this._containsRealPlayer=!0,this.overrideTotalTime(t.totalTime),this.queued=!1)}},{key:"getRealPlayer",value:function(){return this._player}},{key:"overrideTotalTime",value:function(t){this.totalTime=t}},{key:"syncPlayerEvents",value:function(t){var e=this,n=this._player;n.triggerCallback&&t.onStart((function(){return n.triggerCallback("start")})),t.onDone((function(){return e.finish()})),t.onDestroy((function(){return e.destroy()}))}},{key:"_queueEvent",value:function(t,e){ap(this._queuedCallbacks,t,[]).push(e)}},{key:"onDone",value:function(t){this.queued&&this._queueEvent("done",t),this._player.onDone(t)}},{key:"onStart",value:function(t){this.queued&&this._queueEvent("start",t),this._player.onStart(t)}},{key:"onDestroy",value:function(t){this.queued&&this._queueEvent("destroy",t),this._player.onDestroy(t)}},{key:"init",value:function(){this._player.init()}},{key:"hasStarted",value:function(){return!this.queued&&this._player.hasStarted()}},{key:"play",value:function(){!this.queued&&this._player.play()}},{key:"pause",value:function(){!this.queued&&this._player.pause()}},{key:"restart",value:function(){!this.queued&&this._player.restart()}},{key:"finish",value:function(){this._player.finish()}},{key:"destroy",value:function(){this.destroyed=!0,this._player.destroy()}},{key:"reset",value:function(){!this.queued&&this._player.reset()}},{key:"setPosition",value:function(t){this.queued||this._player.setPosition(t)}},{key:"getPosition",value:function(){return this.queued?0:this._player.getPosition()}},{key:"triggerCallback",value:function(t){var e=this._player;e.triggerCallback&&e.triggerCallback(t)}}]),t}();function Cm(t){return null!=t?t:null}function Dm(t){return t&&1===t.nodeType}function Lm(t,e){var n=t.style.display;return t.style.display=null!=e?e:"none",n}function Tm(t,e,n,i,r){var a=[];n.forEach((function(t){return a.push(Lm(t))}));var o=[];i.forEach((function(n,i){var a={};n.forEach((function(t){var n=a[t]=e.computeStyle(i,t,r);n&&0!=n.length||(i.__ng_removed=bm,o.push(i))})),t.set(i,a)}));var s=0;return n.forEach((function(t){return Lm(t,a[s++])})),o}function Em(t,e){var n=new Map;if(t.forEach((function(t){return n.set(t,[])})),0==e.length)return n;var i=new Set(e),r=new Map;return e.forEach((function(t){var e=function t(e){if(!e)return 1;var a=r.get(e);if(a)return a;var o=e.parentNode;return a=n.has(o)?o:i.has(o)?1:t(o),r.set(e,a),a}(t);1!==e&&n.get(e).push(t)})),n}function Pm(t,e){if(t.classList)t.classList.add(e);else{var n=t.$$classes;n||(n=t.$$classes={}),n[e]=!0}}function Om(t,e){if(t.classList)t.classList.remove(e);else{var n=t.$$classes;n&&delete n[e]}}function Am(t,e,n){tp(n).onDone((function(){return t.processLeaveNode(e)}))}function Im(t,e){var n=Object.keys(t),i=Object.keys(e);if(n.length!=i.length)return!1;for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:-1;this._transitionEngine.flush(t)}},{key:"whenRenderingDone",value:function(){return this._transitionEngine.whenRenderingDone()}},{key:"players",get:function(){return this._transitionEngine.players.concat(this._timelineEngine.players)}}]),t}();function Rm(t,e){var n=null,i=null;return Array.isArray(e)&&e.length?(n=Hm(e[0]),e.length>1&&(i=Hm(e[e.length-1]))):e&&(n=Hm(e)),n||i?new Nm(t,n,i):null}var Nm=function(){var t=function(){function t(e,n,i){_(this,t),this._element=e,this._startStyles=n,this._endStyles=i,this._state=0;var r=t.initialStylesByElement.get(e);r||t.initialStylesByElement.set(e,r={}),this._initialStyles=r}return b(t,[{key:"start",value:function(){this._state<1&&(this._startStyles&&Dp(this._element,this._startStyles,this._initialStyles),this._state=1)}},{key:"finish",value:function(){this.start(),this._state<2&&(Dp(this._element,this._initialStyles),this._endStyles&&(Dp(this._element,this._endStyles),this._endStyles=null),this._state=1)}},{key:"destroy",value:function(){this.finish(),this._state<3&&(t.initialStylesByElement.delete(this._element),this._startStyles&&(Lp(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Lp(this._element,this._endStyles),this._endStyles=null),Dp(this._element,this._initialStyles),this._state=3)}}]),t}();return t.initialStylesByElement=new WeakMap,t}();function Hm(t){for(var e=null,n=Object.keys(t),i=0;i=this._delay&&n>=this._duration&&this.finish()}},{key:"finish",value:function(){this._finished||(this._finished=!0,this._onDoneFn(),Um(this._element,this._eventFn,!0))}},{key:"destroy",value:function(){var t,e,n,i;this._destroyed||(this._destroyed=!0,this.finish(),e=this._name,(i=Wm(n=Gm(t=this._element,"").split(","),e))>=0&&(n.splice(i,1),qm(t,"",n.join(","))))}}]),t}();function Vm(t,e,n){qm(t,"PlayState",n,zm(t,e))}function zm(t,e){var n=Gm(t,"");return n.indexOf(",")>0?Wm(n.split(","),e):Wm([n],e)}function Wm(t,e){for(var n=0;n=0)return n;return-1}function Um(t,e,n){n?t.removeEventListener("animationend",e):t.addEventListener("animationend",e)}function qm(t,e,n,i){var r="animation"+e;if(null!=i){var a=t.style[r];if(a.length){var o=a.split(",");o[i]=n,n=o.join(",")}}t.style[r]=n}function Gm(t,e){return t.style["animation"+e]}var Km=function(){function t(e,n,i,r,a,o,s,l){_(this,t),this.element=e,this.keyframes=n,this.animationName=i,this._duration=r,this._delay=a,this._finalStyles=s,this._specialStyles=l,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._started=!1,this.currentSnapshot={},this._state=0,this.easing=o||"linear",this.totalTime=r+a,this._buildStyler()}return b(t,[{key:"onStart",value:function(t){this._onStartFns.push(t)}},{key:"onDone",value:function(t){this._onDoneFns.push(t)}},{key:"onDestroy",value:function(t){this._onDestroyFns.push(t)}},{key:"destroy",value:function(){this.init(),this._state>=4||(this._state=4,this._styler.destroy(),this._flushStartFns(),this._flushDoneFns(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach((function(t){return t()})),this._onDestroyFns=[])}},{key:"_flushDoneFns",value:function(){this._onDoneFns.forEach((function(t){return t()})),this._onDoneFns=[]}},{key:"_flushStartFns",value:function(){this._onStartFns.forEach((function(t){return t()})),this._onStartFns=[]}},{key:"finish",value:function(){this.init(),this._state>=3||(this._state=3,this._styler.finish(),this._flushStartFns(),this._specialStyles&&this._specialStyles.finish(),this._flushDoneFns())}},{key:"setPosition",value:function(t){this._styler.setPosition(t)}},{key:"getPosition",value:function(){return this._styler.getPosition()}},{key:"hasStarted",value:function(){return this._state>=2}},{key:"init",value:function(){this._state>=1||(this._state=1,this._styler.apply(),this._delay&&this._styler.pause())}},{key:"play",value:function(){this.init(),this.hasStarted()||(this._flushStartFns(),this._state=2,this._specialStyles&&this._specialStyles.start()),this._styler.resume()}},{key:"pause",value:function(){this.init(),this._styler.pause()}},{key:"restart",value:function(){this.reset(),this.play()}},{key:"reset",value:function(){this._styler.destroy(),this._buildStyler(),this._styler.apply()}},{key:"_buildStyler",value:function(){var t=this;this._styler=new Bm(this.element,this.animationName,this._duration,this._delay,this.easing,"forwards",(function(){return t.finish()}))}},{key:"triggerCallback",value:function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach((function(t){return t()})),e.length=0}},{key:"beforeDestroy",value:function(){var t=this;this.init();var e={};if(this.hasStarted()){var n=this._state>=3;Object.keys(this._finalStyles).forEach((function(i){"offset"!=i&&(e[i]=n?t._finalStyles[i]:Hp(t.element,i))}))}this.currentSnapshot=e}}]),t}(),Jm=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this)).element=t,r._startingStyles={},r.__initialized=!1,r._styles=vp(i),r}return b(n,[{key:"init",value:function(){var t=this;!this.__initialized&&this._startingStyles&&(this.__initialized=!0,Object.keys(this._styles).forEach((function(e){t._startingStyles[e]=t.element.style[e]})),r(i(n.prototype),"init",this).call(this))}},{key:"play",value:function(){var t=this;this._startingStyles&&(this.init(),Object.keys(this._styles).forEach((function(e){return t.element.style.setProperty(e,t._styles[e])})),r(i(n.prototype),"play",this).call(this))}},{key:"destroy",value:function(){var t=this;this._startingStyles&&(Object.keys(this._startingStyles).forEach((function(e){var n=t._startingStyles[e];n?t.element.style.setProperty(e,n):t.element.style.removeProperty(e)})),this._startingStyles=null,r(i(n.prototype),"destroy",this).call(this))}}]),n}($f),Zm=function(){function t(){_(this,t),this._count=0,this._head=document.querySelector("head"),this._warningIssued=!1}return b(t,[{key:"validateStyleProperty",value:function(t){return fp(t)}},{key:"matchesElement",value:function(t,e){return pp(t,e)}},{key:"containsElement",value:function(t,e){return mp(t,e)}},{key:"query",value:function(t,e,n){return gp(t,e,n)}},{key:"computeStyle",value:function(t,e,n){return window.getComputedStyle(t)[e]}},{key:"buildKeyframeElement",value:function(t,e,n){n=n.map((function(t){return vp(t)}));var i="@keyframes ".concat(e," {\n"),r="";n.forEach((function(t){r=" ";var e=parseFloat(t.offset);i+="".concat(r).concat(100*e,"% {\n"),r+=" ",Object.keys(t).forEach((function(e){var n=t[e];switch(e){case"offset":return;case"easing":return void(n&&(i+="".concat(r,"animation-timing-function: ").concat(n,";\n")));default:return void(i+="".concat(r).concat(e,": ").concat(n,";\n"))}})),i+="".concat(r,"}\n")})),i+="}\n";var a=document.createElement("style");return a.innerHTML=i,a}},{key:"animate",value:function(t,e,n,i,r){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],o=arguments.length>6?arguments[6]:void 0;o&&this._notifyFaultyScrubber();var s=a.filter((function(t){return t instanceof Km})),l={};Fp(n,i)&&s.forEach((function(t){var e=t.currentSnapshot;Object.keys(e).forEach((function(t){return l[t]=e[t]}))}));var u=$m(e=Rp(t,e,l));if(0==n)return new Jm(t,u);var c="".concat("gen_css_kf_").concat(this._count++),d=this.buildKeyframeElement(t,c,e);document.querySelector("head").appendChild(d);var h=Rm(t,e),f=new Km(t,e,c,n,i,r,u,h);return f.onDestroy((function(){return Qm(d)})),f}},{key:"_notifyFaultyScrubber",value:function(){this._warningIssued||(console.warn("@angular/animations: please load the web-animations.js polyfill to allow programmatic access...\n"," visit http://bit.ly/IWukam to learn more about using the web-animation-js polyfill."),this._warningIssued=!0)}}]),t}();function $m(t){var e={};return t&&(Array.isArray(t)?t:[t]).forEach((function(t){Object.keys(t).forEach((function(n){"offset"!=n&&"easing"!=n&&(e[n]=t[n])}))})),e}function Qm(t){t.parentNode.removeChild(t)}var Xm=function(){function t(e,n,i,r){_(this,t),this.element=e,this.keyframes=n,this.options=i,this._specialStyles=r,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this.time=0,this.parentPlayer=null,this.currentSnapshot={},this._duration=i.duration,this._delay=i.delay||0,this.time=this._duration+this._delay}return b(t,[{key:"_onFinish",value:function(){this._finished||(this._finished=!0,this._onDoneFns.forEach((function(t){return t()})),this._onDoneFns=[])}},{key:"init",value:function(){this._buildPlayer(),this._preparePlayerBeforeStart()}},{key:"_buildPlayer",value:function(){var t=this;if(!this._initialized){this._initialized=!0;var e=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,e,this.options),this._finalKeyframe=e.length?e[e.length-1]:{},this.domPlayer.addEventListener("finish",(function(){return t._onFinish()}))}}},{key:"_preparePlayerBeforeStart",value:function(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}},{key:"_triggerWebAnimation",value:function(t,e,n){return t.animate(e,n)}},{key:"onStart",value:function(t){this._onStartFns.push(t)}},{key:"onDone",value:function(t){this._onDoneFns.push(t)}},{key:"onDestroy",value:function(t){this._onDestroyFns.push(t)}},{key:"play",value:function(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach((function(t){return t()})),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}},{key:"pause",value:function(){this.init(),this.domPlayer.pause()}},{key:"finish",value:function(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}},{key:"reset",value:function(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1}},{key:"_resetDomPlayerState",value:function(){this.domPlayer&&this.domPlayer.cancel()}},{key:"restart",value:function(){this.reset(),this.play()}},{key:"hasStarted",value:function(){return this._started}},{key:"destroy",value:function(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach((function(t){return t()})),this._onDestroyFns=[])}},{key:"setPosition",value:function(t){this.domPlayer.currentTime=t*this.time}},{key:"getPosition",value:function(){return this.domPlayer.currentTime/this.time}},{key:"beforeDestroy",value:function(){var t=this,e={};this.hasStarted()&&Object.keys(this._finalKeyframe).forEach((function(n){"offset"!=n&&(e[n]=t._finished?t._finalKeyframe[n]:Hp(t.element,n))})),this.currentSnapshot=e}},{key:"triggerCallback",value:function(t){var e="start"==t?this._onStartFns:this._onDoneFns;e.forEach((function(t){return t()})),e.length=0}},{key:"totalTime",get:function(){return this._delay+this._duration}}]),t}(),tg=function(){function t(){_(this,t),this._isNativeImpl=/\{\s*\[native\s+code\]\s*\}/.test(eg().toString()),this._cssKeyframesDriver=new Zm}return b(t,[{key:"validateStyleProperty",value:function(t){return fp(t)}},{key:"matchesElement",value:function(t,e){return pp(t,e)}},{key:"containsElement",value:function(t,e){return mp(t,e)}},{key:"query",value:function(t,e,n){return gp(t,e,n)}},{key:"computeStyle",value:function(t,e,n){return window.getComputedStyle(t)[e]}},{key:"overrideWebAnimationsSupport",value:function(t){this._isNativeImpl=t}},{key:"animate",value:function(t,e,n,i,r){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],o=arguments.length>6?arguments[6]:void 0,s=!o&&!this._isNativeImpl;if(s)return this._cssKeyframesDriver.animate(t,e,n,i,r,a);var l=0==i?"both":"forwards",u={duration:n,delay:i,fill:l};r&&(u.easing=r);var c={},d=a.filter((function(t){return t instanceof Xm}));Fp(n,i)&&d.forEach((function(t){var e=t.currentSnapshot;Object.keys(e).forEach((function(t){return c[t]=e[t]}))}));var h=Rm(t,e=Rp(t,e=e.map((function(t){return Sp(t,!1)})),c));return new Xm(t,e,u,h)}}]),t}();function eg(){return"undefined"!=typeof window&&void 0!==window.document&&Element.prototype.animate||{}}var ng=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this))._nextAnimationId=0,r._renderer=t.createRenderer(i.body,{id:"0",encapsulation:Oe.None,styles:[],data:{animation:[]}}),r}return b(n,[{key:"build",value:function(t){var e=this._nextAnimationId.toString();this._nextAnimationId++;var n=Array.isArray(t)?zf(t):t;return ag(this._renderer,null,e,"register",[n]),new ig(e,this._renderer)}}]),n}(Nf);return t.\u0275fac=function(e){return new(e||t)(ge(Al),ge(id))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),ig=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this))._id=t,r._renderer=i,r}return b(n,[{key:"create",value:function(t,e){return new rg(this._id,t,e||{},this._renderer)}}]),n}(Hf),rg=function(){function t(e,n,i,r){_(this,t),this.id=e,this.element=n,this._renderer=r,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",i)}return b(t,[{key:"_listen",value:function(t,e){return this._renderer.listen(this.element,"@@".concat(this.id,":").concat(t),e)}},{key:"_command",value:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i=0&&t0){var i=t.slice(0,e),r=i.toLowerCase(),a=t.slice(e+1).trim();n.maybeSetNormalizedName(i,r),n.headers.has(r)?n.headers.get(r).push(a):n.headers.set(r,[a])}}))}:function(){n.headers=new Map,Object.keys(e).forEach((function(t){var i=e[t],r=t.toLowerCase();"string"==typeof i&&(i=[i]),i.length>0&&(n.headers.set(r,i),n.maybeSetNormalizedName(t,r))}))}:this.headers=new Map}return b(t,[{key:"has",value:function(t){return this.init(),this.headers.has(t.toLowerCase())}},{key:"get",value:function(t){this.init();var e=this.headers.get(t.toLowerCase());return e&&e.length>0?e[0]:null}},{key:"keys",value:function(){return this.init(),Array.from(this.normalizedNames.values())}},{key:"getAll",value:function(t){return this.init(),this.headers.get(t.toLowerCase())||null}},{key:"append",value:function(t,e){return this.clone({name:t,value:e,op:"a"})}},{key:"set",value:function(t,e){return this.clone({name:t,value:e,op:"s"})}},{key:"delete",value:function(t,e){return this.clone({name:t,value:e,op:"d"})}},{key:"maybeSetNormalizedName",value:function(t,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,t)}},{key:"init",value:function(){var e=this;this.lazyInit&&(this.lazyInit instanceof t?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach((function(t){return e.applyUpdate(t)})),this.lazyUpdate=null))}},{key:"copyFrom",value:function(t){var e=this;t.init(),Array.from(t.headers.keys()).forEach((function(n){e.headers.set(n,t.headers.get(n)),e.normalizedNames.set(n,t.normalizedNames.get(n))}))}},{key:"clone",value:function(e){var n=new t;return n.lazyInit=this.lazyInit&&this.lazyInit instanceof t?this.lazyInit:this,n.lazyUpdate=(this.lazyUpdate||[]).concat([e]),n}},{key:"applyUpdate",value:function(t){var e=t.name.toLowerCase();switch(t.op){case"a":case"s":var n=t.value;if("string"==typeof n&&(n=[n]),0===n.length)return;this.maybeSetNormalizedName(t.name,e);var i=("a"===t.op?this.headers.get(e):void 0)||[];i.push.apply(i,u(n)),this.headers.set(e,i);break;case"d":var r=t.value;if(r){var a=this.headers.get(e);if(!a)return;0===(a=a.filter((function(t){return-1===r.indexOf(t)}))).length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,a)}else this.headers.delete(e),this.normalizedNames.delete(e)}}},{key:"forEach",value:function(t){var e=this;this.init(),Array.from(this.normalizedNames.keys()).forEach((function(n){return t(e.normalizedNames.get(n),e.headers.get(n))}))}}]),t}(),wg=function(){function t(){_(this,t)}return b(t,[{key:"encodeKey",value:function(t){return Sg(t)}},{key:"encodeValue",value:function(t){return Sg(t)}},{key:"decodeKey",value:function(t){return decodeURIComponent(t)}},{key:"decodeValue",value:function(t){return decodeURIComponent(t)}}]),t}();function Mg(t,e){var n=new Map;return t.length>0&&t.split("&").forEach((function(t){var i=t.indexOf("="),r=l(-1==i?[e.decodeKey(t),""]:[e.decodeKey(t.slice(0,i)),e.decodeValue(t.slice(i+1))],2),a=r[0],o=r[1],s=n.get(a)||[];s.push(o),n.set(a,s)})),n}function Sg(t){return encodeURIComponent(t).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/gi,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%2B/gi,"+").replace(/%3D/gi,"=").replace(/%3F/gi,"?").replace(/%2F/gi,"/")}var xg=function(){function t(){var e=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(_(this,t),this.updates=null,this.cloneFrom=null,this.encoder=n.encoder||new wg,n.fromString){if(n.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=Mg(n.fromString,this.encoder)}else n.fromObject?(this.map=new Map,Object.keys(n.fromObject).forEach((function(t){var i=n.fromObject[t];e.map.set(t,Array.isArray(i)?i:[i])}))):this.map=null}return b(t,[{key:"has",value:function(t){return this.init(),this.map.has(t)}},{key:"get",value:function(t){this.init();var e=this.map.get(t);return e?e[0]:null}},{key:"getAll",value:function(t){return this.init(),this.map.get(t)||null}},{key:"keys",value:function(){return this.init(),Array.from(this.map.keys())}},{key:"append",value:function(t,e){return this.clone({param:t,value:e,op:"a"})}},{key:"set",value:function(t,e){return this.clone({param:t,value:e,op:"s"})}},{key:"delete",value:function(t,e){return this.clone({param:t,value:e,op:"d"})}},{key:"toString",value:function(){var t=this;return this.init(),this.keys().map((function(e){var n=t.encoder.encodeKey(e);return t.map.get(e).map((function(e){return n+"="+t.encoder.encodeValue(e)})).join("&")})).filter((function(t){return""!==t})).join("&")}},{key:"clone",value:function(e){var n=new t({encoder:this.encoder});return n.cloneFrom=this.cloneFrom||this,n.updates=(this.updates||[]).concat([e]),n}},{key:"init",value:function(){var t=this;null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach((function(e){return t.map.set(e,t.cloneFrom.map.get(e))})),this.updates.forEach((function(e){switch(e.op){case"a":case"s":var n=("a"===e.op?t.map.get(e.param):void 0)||[];n.push(e.value),t.map.set(e.param,n);break;case"d":if(void 0===e.value){t.map.delete(e.param);break}var i=t.map.get(e.param)||[],r=i.indexOf(e.value);-1!==r&&i.splice(r,1),i.length>0?t.map.set(e.param,i):t.map.delete(e.param)}})),this.cloneFrom=this.updates=null)}}]),t}();function Cg(t){return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer}function Dg(t){return"undefined"!=typeof Blob&&t instanceof Blob}function Lg(t){return"undefined"!=typeof FormData&&t instanceof FormData}var Tg=function(){function t(e,n,i,r){var a;if(_(this,t),this.url=n,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=e.toUpperCase(),function(t){switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||r?(this.body=void 0!==i?i:null,a=r):a=i,a&&(this.reportProgress=!!a.reportProgress,this.withCredentials=!!a.withCredentials,a.responseType&&(this.responseType=a.responseType),a.headers&&(this.headers=a.headers),a.params&&(this.params=a.params)),this.headers||(this.headers=new kg),this.params){var o=this.params.toString();if(0===o.length)this.urlWithParams=n;else{var s=n.indexOf("?");this.urlWithParams=n+(-1===s?"?":s0&&void 0!==arguments[0]?arguments[0]:{},n=e.method||this.method,i=e.url||this.url,r=e.responseType||this.responseType,a=void 0!==e.body?e.body:this.body,o=void 0!==e.withCredentials?e.withCredentials:this.withCredentials,s=void 0!==e.reportProgress?e.reportProgress:this.reportProgress,l=e.headers||this.headers,u=e.params||this.params;return void 0!==e.setHeaders&&(l=Object.keys(e.setHeaders).reduce((function(t,n){return t.set(n,e.setHeaders[n])}),l)),e.setParams&&(u=Object.keys(e.setParams).reduce((function(t,n){return t.set(n,e.setParams[n])}),u)),new t(n,i,a,{params:u,headers:l,reportProgress:s,responseType:r,withCredentials:o})}}]),t}(),Eg=function(t){return t[t.Sent=0]="Sent",t[t.UploadProgress=1]="UploadProgress",t[t.ResponseHeader=2]="ResponseHeader",t[t.DownloadProgress=3]="DownloadProgress",t[t.Response=4]="Response",t[t.User=5]="User",t}({}),Pg=function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"OK";_(this,t),this.headers=e.headers||new kg,this.status=void 0!==e.status?e.status:n,this.statusText=e.statusText||i,this.url=e.url||null,this.ok=this.status>=200&&this.status<300},Og=function(t){f(n,t);var e=v(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _(this,n),(t=e.call(this,i)).type=Eg.ResponseHeader,t}return b(n,[{key:"clone",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new n({headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}]),n}(Pg),Ag=function(t){f(n,t);var e=v(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return _(this,n),(t=e.call(this,i)).type=Eg.Response,t.body=void 0!==i.body?i.body:null,t}return b(n,[{key:"clone",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return new n({body:void 0!==t.body?t.body:this.body,headers:t.headers||this.headers,status:void 0!==t.status?t.status:this.status,statusText:t.statusText||this.statusText,url:t.url||this.url||void 0})}}]),n}(Pg),Ig=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this,t,0,"Unknown Error")).name="HttpErrorResponse",i.ok=!1,i.message=i.status>=200&&i.status<300?"Http failure during parsing for ".concat(t.url||"(unknown url)"):"Http failure response for ".concat(t.url||"(unknown url)",": ").concat(t.status," ").concat(t.statusText),i.error=t.error||null,i}return n}(Pg);function Yg(t,e){return{body:e,headers:t.headers,observe:t.observe,params:t.params,reportProgress:t.reportProgress,responseType:t.responseType,withCredentials:t.withCredentials}}var Fg=function(){var t=function(){function t(e){_(this,t),this.handler=e}return b(t,[{key:"request",value:function(t,e){var n,i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(t instanceof Tg)n=t;else{var a=void 0;a=r.headers instanceof kg?r.headers:new kg(r.headers);var o=void 0;r.params&&(o=r.params instanceof xg?r.params:new xg({fromObject:r.params})),n=new Tg(t,e,void 0!==r.body?r.body:null,{headers:a,params:o,reportProgress:r.reportProgress,responseType:r.responseType||"json",withCredentials:r.withCredentials})}var s=pg(n).pipe(mg((function(t){return i.handler.handle(t)})));if(t instanceof Tg||"events"===r.observe)return s;var l=s.pipe(gg((function(t){return t instanceof Ag})));switch(r.observe||"body"){case"body":switch(n.responseType){case"arraybuffer":return l.pipe(nt((function(t){if(null!==t.body&&!(t.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return t.body})));case"blob":return l.pipe(nt((function(t){if(null!==t.body&&!(t.body instanceof Blob))throw new Error("Response is not a Blob.");return t.body})));case"text":return l.pipe(nt((function(t){if(null!==t.body&&"string"!=typeof t.body)throw new Error("Response is not a string.");return t.body})));case"json":default:return l.pipe(nt((function(t){return t.body})))}case"response":return l;default:throw new Error("Unreachable: unhandled observe type ".concat(r.observe,"}"))}}},{key:"delete",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.request("DELETE",t,e)}},{key:"get",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.request("GET",t,e)}},{key:"head",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.request("HEAD",t,e)}},{key:"jsonp",value:function(t,e){return this.request("JSONP",t,{params:(new xg).append(e,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}},{key:"options",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.request("OPTIONS",t,e)}},{key:"patch",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.request("PATCH",t,Yg(n,e))}},{key:"post",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.request("POST",t,Yg(n,e))}},{key:"put",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.request("PUT",t,Yg(n,e))}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(yg))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Rg=function(){function t(e,n){_(this,t),this.next=e,this.interceptor=n}return b(t,[{key:"handle",value:function(t){return this.interceptor.intercept(t,this.next)}}]),t}(),Ng=new se("HTTP_INTERCEPTORS"),Hg=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"intercept",value:function(t,e){return e.handle(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),jg=/^\)\]\}',?\n/,Bg=function t(){_(this,t)},Vg=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"build",value:function(){return new XMLHttpRequest}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),zg=function(){var t=function(){function t(e){_(this,t),this.xhrFactory=e}return b(t,[{key:"handle",value:function(t){var e=this;if("JSONP"===t.method)throw new Error("Attempted to construct Jsonp request without JsonpClientModule installed.");return new H((function(n){var i=e.xhrFactory.build();if(i.open(t.method,t.urlWithParams),t.withCredentials&&(i.withCredentials=!0),t.headers.forEach((function(t,e){return i.setRequestHeader(t,e.join(","))})),t.headers.has("Accept")||i.setRequestHeader("Accept","application/json, text/plain, */*"),!t.headers.has("Content-Type")){var r=t.detectContentTypeHeader();null!==r&&i.setRequestHeader("Content-Type",r)}if(t.responseType){var a=t.responseType.toLowerCase();i.responseType="json"!==a?a:"text"}var o=t.serializeBody(),s=null,l=function(){if(null!==s)return s;var e=1223===i.status?204:i.status,n=i.statusText||"OK",r=new kg(i.getAllResponseHeaders()),a=function(t){return"responseURL"in t&&t.responseURL?t.responseURL:/^X-Request-URL:/m.test(t.getAllResponseHeaders())?t.getResponseHeader("X-Request-URL"):null}(i)||t.url;return s=new Og({headers:r,status:e,statusText:n,url:a})},u=function(){var e=l(),r=e.headers,a=e.status,o=e.statusText,s=e.url,u=null;204!==a&&(u=void 0===i.response?i.responseText:i.response),0===a&&(a=u?200:0);var c=a>=200&&a<300;if("json"===t.responseType&&"string"==typeof u){var d=u;u=u.replace(jg,"");try{u=""!==u?JSON.parse(u):null}catch(h){u=d,c&&(c=!1,u={error:h,text:u})}}c?(n.next(new Ag({body:u,headers:r,status:a,statusText:o,url:s||void 0})),n.complete()):n.error(new Ig({error:u,headers:r,status:a,statusText:o,url:s||void 0}))},c=function(t){var e=l(),r=new Ig({error:t,status:i.status||0,statusText:i.statusText||"Unknown Error",url:e.url||void 0});n.error(r)},d=!1,h=function(e){d||(n.next(l()),d=!0);var r={type:Eg.DownloadProgress,loaded:e.loaded};e.lengthComputable&&(r.total=e.total),"text"===t.responseType&&i.responseText&&(r.partialText=i.responseText),n.next(r)},f=function(t){var e={type:Eg.UploadProgress,loaded:t.loaded};t.lengthComputable&&(e.total=t.total),n.next(e)};return i.addEventListener("load",u),i.addEventListener("error",c),t.reportProgress&&(i.addEventListener("progress",h),null!==o&&i.upload&&i.upload.addEventListener("progress",f)),i.send(o),n.next({type:Eg.Sent}),function(){i.removeEventListener("error",c),i.removeEventListener("load",u),t.reportProgress&&(i.removeEventListener("progress",h),null!==o&&i.upload&&i.upload.removeEventListener("progress",f)),i.readyState!==i.DONE&&i.abort()}}))}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Bg))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Wg=new se("XSRF_COOKIE_NAME"),Ug=new se("XSRF_HEADER_NAME"),qg=function t(){_(this,t)},Gg=function(){var t=function(){function t(e,n,i){_(this,t),this.doc=e,this.platform=n,this.cookieName=i,this.lastCookieString="",this.lastToken=null,this.parseCount=0}return b(t,[{key:"getToken",value:function(){if("server"===this.platform)return null;var t=this.doc.cookie||"";return t!==this.lastCookieString&&(this.parseCount++,this.lastToken=gh(t,this.cookieName),this.lastCookieString=t),this.lastToken}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(id),ge(lc),ge(Wg))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Kg=function(){var t=function(){function t(e,n){_(this,t),this.tokenService=e,this.headerName=n}return b(t,[{key:"intercept",value:function(t,e){var n=t.url.toLowerCase();if("GET"===t.method||"HEAD"===t.method||n.startsWith("http://")||n.startsWith("https://"))return e.handle(t);var i=this.tokenService.getToken();return null===i||t.headers.has(this.headerName)||(t=t.clone({headers:t.headers.set(this.headerName,i)})),e.handle(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(qg),ge(Ug))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Jg=function(){var t=function(){function t(e,n){_(this,t),this.backend=e,this.injector=n,this.chain=null}return b(t,[{key:"handle",value:function(t){if(null===this.chain){var e=this.injector.get(Ng,[]);this.chain=e.reduceRight((function(t,e){return new Rg(t,e)}),this.backend)}return this.chain.handle(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(bg),ge(zo))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Zg=function(){var t=function(){function t(){_(this,t)}return b(t,null,[{key:"disable",value:function(){return{ngModule:t,providers:[{provide:Kg,useClass:Hg}]}}},{key:"withOptions",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{ngModule:t,providers:[e.cookieName?{provide:Wg,useValue:e.cookieName}:[],e.headerName?{provide:Ug,useValue:e.headerName}:[]]}}}]),t}();return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[Kg,{provide:Ng,useExisting:Kg,multi:!0},{provide:qg,useClass:Gg},{provide:Wg,useValue:"XSRF-TOKEN"},{provide:Ug,useValue:"X-XSRF-TOKEN"}]}),t}(),$g=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[Fg,{provide:yg,useClass:Jg},zg,{provide:bg,useExisting:zg},Vg,{provide:Bg,useExisting:Vg}],imports:[[Zg.withOptions({cookieName:"XSRF-TOKEN",headerName:"X-XSRF-TOKEN"})]]}),t}(),Qg=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this))._value=t,i}return b(n,[{key:"_subscribe",value:function(t){var e=r(i(n.prototype),"_subscribe",this).call(this,t);return e&&!e.closed&&t.next(this._value),e}},{key:"getValue",value:function(){if(this.hasError)throw this.thrownError;if(this.closed)throw new B;return this._value}},{key:"next",value:function(t){r(i(n.prototype),"next",this).call(this,this._value=t)}},{key:"value",get:function(){return this.getValue()}}]),n}(W),Xg=function(){function t(){return Error.call(this),this.message="no elements in sequence",this.name="EmptyError",this}return t.prototype=Object.create(Error.prototype),t}(),tv={};function ev(){for(var t=arguments.length,e=new Array(t),n=0;n0)for(var n=this.count>=this.total?this.total:this.count,i=this.ring,r=0;r0&&void 0!==arguments[0]?arguments[0]:mv;return function(e){return e.lift(new fv(t))}}var fv=function(){function t(e){_(this,t),this.errorFactory=e}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new pv(t,this.errorFactory))}}]),t}(),pv=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).errorFactory=i,r.hasValue=!1,r}return b(n,[{key:"_next",value:function(t){this.hasValue=!0,this.destination.next(t)}},{key:"_complete",value:function(){if(this.hasValue)return this.destination.complete();var t;try{t=this.errorFactory()}catch(e){t=e}this.destination.error(t)}}]),n}(A);function mv(){return new Xg}function gv(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return function(e){return e.lift(new vv(t))}}var vv=function(){function t(e){_(this,t),this.defaultValue=e}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new _v(t,this.defaultValue))}}]),t}(),_v=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).defaultValue=i,r.isEmpty=!0,r}return b(n,[{key:"_next",value:function(t){this.isEmpty=!1,this.destination.next(t)}},{key:"_complete",value:function(){this.isEmpty&&this.destination.next(this.defaultValue),this.destination.complete()}}]),n}(A);function yv(t){return function(e){var n=new bv(t),i=e.lift(n);return n.caught=i}}var bv=function(){function t(e){_(this,t),this.selector=e}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new kv(t,this.selector,this.caught))}}]),t}(),kv=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,t)).selector=i,a.caught=r,a}return b(n,[{key:"error",value:function(t){if(!this.isStopped){var e;try{e=this.selector(t,this.caught)}catch(o){return void r(i(n.prototype),"error",this).call(this,o)}this._unsubscribeAndRecycle();var a=new G(this,void 0,void 0);this.add(a),tt(this,e,void 0,void 0,a)}}}]),n}(et);function wv(t){return function(e){return 0===t?av():e.lift(new Mv(t))}}var Mv=function(){function t(e){if(_(this,t),this.total=e,this.total<0)throw new lv}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new Sv(t,this.total))}}]),t}(),Sv=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).total=i,r.count=0,r}return b(n,[{key:"_next",value:function(t){var e=this.total,n=++this.count;n<=e&&(this.destination.next(t),n===e&&(this.destination.complete(),this.unsubscribe()))}}]),n}(A);function xv(t,e){var n=arguments.length>=2;return function(i){return i.pipe(t?gg((function(e,n){return t(e,n,i)})):ct,wv(1),n?gv(e):hv((function(){return new Xg})))}}function Cv(t,e,n){return function(i){return i.lift(new Dv(t,e,n))}}var Dv=function(){function t(e,n,i){_(this,t),this.nextOrObserver=e,this.error=n,this.complete=i}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new Lv(t,this.nextOrObserver,this.error,this.complete))}}]),t}(),Lv=function(t){f(n,t);var e=v(n);function n(t,i,r,o){var s;return _(this,n),(s=e.call(this,t))._tapNext=F,s._tapError=F,s._tapComplete=F,s._tapError=r||F,s._tapComplete=o||F,S(i)?(s._context=a(s),s._tapNext=i):i&&(s._context=i,s._tapNext=i.next||F,s._tapError=i.error||F,s._tapComplete=i.complete||F),s}return b(n,[{key:"_next",value:function(t){try{this._tapNext.call(this._context,t)}catch(e){return void this.destination.error(e)}this.destination.next(t)}},{key:"_error",value:function(t){try{this._tapError.call(this._context,t)}catch(t){return void this.destination.error(t)}this.destination.error(t)}},{key:"_complete",value:function(){try{this._tapComplete.call(this._context)}catch(t){return void this.destination.error(t)}return this.destination.complete()}}]),n}(A),Tv=function(){function t(e,n,i){_(this,t),this.predicate=e,this.thisArg=n,this.source=i}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new Ev(t,this.predicate,this.thisArg,this.source))}}]),t}(),Ev=function(t){f(n,t);var e=v(n);function n(t,i,r,o){var s;return _(this,n),(s=e.call(this,t)).predicate=i,s.thisArg=r,s.source=o,s.index=0,s.thisArg=r||a(s),s}return b(n,[{key:"notifyComplete",value:function(t){this.destination.next(t),this.destination.complete()}},{key:"_next",value:function(t){var e=!1;try{e=this.predicate.call(this.thisArg,t,this.index++,this.source)}catch(n){return void this.destination.error(n)}e||this.notifyComplete(!1)}},{key:"_complete",value:function(){this.notifyComplete(!0)}}]),n}(A);function Pv(t,e){return"function"==typeof e?function(n){return n.pipe(Pv((function(n,i){return ot(t(n,i)).pipe(nt((function(t,r){return e(n,t,i,r)})))})))}:function(e){return e.lift(new Ov(t))}}var Ov=function(){function t(e){_(this,t),this.project=e}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new Av(t,this.project))}}]),t}(),Av=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).project=i,r.index=0,r}return b(n,[{key:"_next",value:function(t){var e,n=this.index++;try{e=this.project(t,n)}catch(i){return void this.destination.error(i)}this._innerSub(e,t,n)}},{key:"_innerSub",value:function(t,e,n){var i=this.innerSubscription;i&&i.unsubscribe();var r=new G(this,void 0,void 0);this.destination.add(r),this.innerSubscription=tt(this,t,e,n,r)}},{key:"_complete",value:function(){var t=this.innerSubscription;t&&!t.closed||r(i(n.prototype),"_complete",this).call(this),this.unsubscribe()}},{key:"_unsubscribe",value:function(){this.innerSubscription=null}},{key:"notifyComplete",value:function(t){this.destination.remove(t),this.innerSubscription=null,this.isStopped&&r(i(n.prototype),"_complete",this).call(this)}},{key:"notifyNext",value:function(t,e,n,i,r){this.destination.next(e)}}]),n}(et);function Iv(){return sv()(pg.apply(void 0,arguments))}function Yv(){for(var t=arguments.length,e=new Array(t),n=0;n=2&&(n=!0),function(i){return i.lift(new Rv(t,e,n))}}var Rv=function(){function t(e,n){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];_(this,t),this.accumulator=e,this.seed=n,this.hasSeed=i}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new Nv(t,this.accumulator,this.seed,this.hasSeed))}}]),t}(),Nv=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this,t)).accumulator=i,o._seed=r,o.hasSeed=a,o.index=0,o}return b(n,[{key:"_next",value:function(t){if(this.hasSeed)return this._tryNext(t);this.seed=t,this.destination.next(t)}},{key:"_tryNext",value:function(t){var e,n=this.index++;try{e=this.accumulator(this.seed,t,n)}catch(i){this.destination.error(i)}this.seed=e,this.destination.next(e)}},{key:"seed",get:function(){return this._seed},set:function(t){this.hasSeed=!0,this._seed=t}}]),n}(A);function Hv(t){return function(e){return e.lift(new jv(t))}}var jv=function(){function t(e){_(this,t),this.callback=e}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new Bv(t,this.callback))}}]),t}(),Bv=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).add(new C(i)),r}return n}(A),Vv=function t(e,n){_(this,t),this.id=e,this.url=n},zv=function(t){f(n,t);var e=v(n);function n(t,i){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"imperative",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null;return _(this,n),(r=e.call(this,t,i)).navigationTrigger=a,r.restoredState=o,r}return b(n,[{key:"toString",value:function(){return"NavigationStart(id: ".concat(this.id,", url: '").concat(this.url,"')")}}]),n}(Vv),Wv=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,t,i)).urlAfterRedirects=r,a}return b(n,[{key:"toString",value:function(){return"NavigationEnd(id: ".concat(this.id,", url: '").concat(this.url,"', urlAfterRedirects: '").concat(this.urlAfterRedirects,"')")}}]),n}(Vv),Uv=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,t,i)).reason=r,a}return b(n,[{key:"toString",value:function(){return"NavigationCancel(id: ".concat(this.id,", url: '").concat(this.url,"')")}}]),n}(Vv),qv=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,t,i)).error=r,a}return b(n,[{key:"toString",value:function(){return"NavigationError(id: ".concat(this.id,", url: '").concat(this.url,"', error: ").concat(this.error,")")}}]),n}(Vv),Gv=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this,t,i)).urlAfterRedirects=r,o.state=a,o}return b(n,[{key:"toString",value:function(){return"RoutesRecognized(id: ".concat(this.id,", url: '").concat(this.url,"', urlAfterRedirects: '").concat(this.urlAfterRedirects,"', state: ").concat(this.state,")")}}]),n}(Vv),Kv=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this,t,i)).urlAfterRedirects=r,o.state=a,o}return b(n,[{key:"toString",value:function(){return"GuardsCheckStart(id: ".concat(this.id,", url: '").concat(this.url,"', urlAfterRedirects: '").concat(this.urlAfterRedirects,"', state: ").concat(this.state,")")}}]),n}(Vv),Jv=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o){var s;return _(this,n),(s=e.call(this,t,i)).urlAfterRedirects=r,s.state=a,s.shouldActivate=o,s}return b(n,[{key:"toString",value:function(){return"GuardsCheckEnd(id: ".concat(this.id,", url: '").concat(this.url,"', urlAfterRedirects: '").concat(this.urlAfterRedirects,"', state: ").concat(this.state,", shouldActivate: ").concat(this.shouldActivate,")")}}]),n}(Vv),Zv=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this,t,i)).urlAfterRedirects=r,o.state=a,o}return b(n,[{key:"toString",value:function(){return"ResolveStart(id: ".concat(this.id,", url: '").concat(this.url,"', urlAfterRedirects: '").concat(this.urlAfterRedirects,"', state: ").concat(this.state,")")}}]),n}(Vv),$v=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this,t,i)).urlAfterRedirects=r,o.state=a,o}return b(n,[{key:"toString",value:function(){return"ResolveEnd(id: ".concat(this.id,", url: '").concat(this.url,"', urlAfterRedirects: '").concat(this.urlAfterRedirects,"', state: ").concat(this.state,")")}}]),n}(Vv),Qv=function(){function t(e){_(this,t),this.route=e}return b(t,[{key:"toString",value:function(){return"RouteConfigLoadStart(path: ".concat(this.route.path,")")}}]),t}(),Xv=function(){function t(e){_(this,t),this.route=e}return b(t,[{key:"toString",value:function(){return"RouteConfigLoadEnd(path: ".concat(this.route.path,")")}}]),t}(),t_=function(){function t(e){_(this,t),this.snapshot=e}return b(t,[{key:"toString",value:function(){return"ChildActivationStart(path: '".concat(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"","')")}}]),t}(),e_=function(){function t(e){_(this,t),this.snapshot=e}return b(t,[{key:"toString",value:function(){return"ChildActivationEnd(path: '".concat(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"","')")}}]),t}(),n_=function(){function t(e){_(this,t),this.snapshot=e}return b(t,[{key:"toString",value:function(){return"ActivationStart(path: '".concat(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"","')")}}]),t}(),i_=function(){function t(e){_(this,t),this.snapshot=e}return b(t,[{key:"toString",value:function(){return"ActivationEnd(path: '".concat(this.snapshot.routeConfig&&this.snapshot.routeConfig.path||"","')")}}]),t}(),r_=function(){function t(e,n,i){_(this,t),this.routerEvent=e,this.position=n,this.anchor=i}return b(t,[{key:"toString",value:function(){var t=this.position?"".concat(this.position[0],", ").concat(this.position[1]):null;return"Scroll(anchor: '".concat(this.anchor,"', position: '").concat(t,"')")}}]),t}(),a_=function(){function t(e){_(this,t),this.params=e||{}}return b(t,[{key:"has",value:function(t){return Object.prototype.hasOwnProperty.call(this.params,t)}},{key:"get",value:function(t){if(this.has(t)){var e=this.params[t];return Array.isArray(e)?e[0]:e}return null}},{key:"getAll",value:function(t){if(this.has(t)){var e=this.params[t];return Array.isArray(e)?e:[e]}return[]}},{key:"keys",get:function(){return Object.keys(this.params)}}]),t}();function o_(t){return new a_(t)}function s_(t){var e=Error("NavigationCancelingError: "+t);return e.ngNavigationCancelingError=!0,e}function l_(t,e,n){var i=n.path.split("/");if(i.length>t.length)return null;if("full"===n.pathMatch&&(e.hasChildren()||i.length-1})):t===e}function d_(t){return Array.prototype.concat.apply([],t)}function h_(t){return t.length>0?t[t.length-1]:null}function f_(t,e){for(var n in t)t.hasOwnProperty(n)&&e(t[n],n)}function p_(t){return gs(t)?t:ms(t)?ot(Promise.resolve(t)):pg(t)}function m_(t,e,n){return n?function(t,e){return u_(t,e)}(t.queryParams,e.queryParams)&&function t(e,n){if(!y_(e.segments,n.segments))return!1;if(e.numberOfChildren!==n.numberOfChildren)return!1;for(var i in n.children){if(!e.children[i])return!1;if(!t(e.children[i],n.children[i]))return!1}return!0}(t.root,e.root):function(t,e){return Object.keys(e).length<=Object.keys(t).length&&Object.keys(e).every((function(n){return c_(t[n],e[n])}))}(t.queryParams,e.queryParams)&&function t(e,n){return function e(n,i,r){if(n.segments.length>r.length)return!!y_(n.segments.slice(0,r.length),r)&&!i.hasChildren();if(n.segments.length===r.length){if(!y_(n.segments,r))return!1;for(var a in i.children){if(!n.children[a])return!1;if(!t(n.children[a],i.children[a]))return!1}return!0}var o=r.slice(0,n.segments.length),s=r.slice(n.segments.length);return!!y_(n.segments,o)&&!!n.children.primary&&e(n.children.primary,i,s)}(e,n,n.segments)}(t.root,e.root)}var g_=function(){function t(e,n,i){_(this,t),this.root=e,this.queryParams=n,this.fragment=i}return b(t,[{key:"toString",value:function(){return M_.serialize(this)}},{key:"queryParamMap",get:function(){return this._queryParamMap||(this._queryParamMap=o_(this.queryParams)),this._queryParamMap}}]),t}(),v_=function(){function t(e,n){var i=this;_(this,t),this.segments=e,this.children=n,this.parent=null,f_(n,(function(t,e){return t.parent=i}))}return b(t,[{key:"hasChildren",value:function(){return this.numberOfChildren>0}},{key:"toString",value:function(){return S_(this)}},{key:"numberOfChildren",get:function(){return Object.keys(this.children).length}}]),t}(),__=function(){function t(e,n){_(this,t),this.path=e,this.parameters=n}return b(t,[{key:"toString",value:function(){return E_(this)}},{key:"parameterMap",get:function(){return this._parameterMap||(this._parameterMap=o_(this.parameters)),this._parameterMap}}]),t}();function y_(t,e){return t.length===e.length&&t.every((function(t,n){return t.path===e[n].path}))}function b_(t,e){var n=[];return f_(t.children,(function(t,i){"primary"===i&&(n=n.concat(e(t,i)))})),f_(t.children,(function(t,i){"primary"!==i&&(n=n.concat(e(t,i)))})),n}var k_=function t(){_(this,t)},w_=function(){function t(){_(this,t)}return b(t,[{key:"parse",value:function(t){var e=new Y_(t);return new g_(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}},{key:"serialize",value:function(t){var e,n,i="/".concat(function t(e,n){if(!e.hasChildren())return S_(e);if(n){var i=e.children.primary?t(e.children.primary,!1):"",r=[];return f_(e.children,(function(e,n){"primary"!==n&&r.push("".concat(n,":").concat(t(e,!1)))})),r.length>0?"".concat(i,"(").concat(r.join("//"),")"):i}var a=b_(e,(function(n,i){return"primary"===i?[t(e.children.primary,!1)]:["".concat(i,":").concat(t(n,!1))]}));return"".concat(S_(e),"/(").concat(a.join("//"),")")}(t.root,!0)),r=(e=t.queryParams,(n=Object.keys(e).map((function(t){var n=e[t];return Array.isArray(n)?n.map((function(e){return"".concat(C_(t),"=").concat(C_(e))})).join("&"):"".concat(C_(t),"=").concat(C_(n))}))).length?"?".concat(n.join("&")):""),a="string"==typeof t.fragment?"#".concat(encodeURI(t.fragment)):"";return"".concat(i).concat(r).concat(a)}}]),t}(),M_=new w_;function S_(t){return t.segments.map((function(t){return E_(t)})).join("/")}function x_(t){return encodeURIComponent(t).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function C_(t){return x_(t).replace(/%3B/gi,";")}function D_(t){return x_(t).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function L_(t){return decodeURIComponent(t)}function T_(t){return L_(t.replace(/\+/g,"%20"))}function E_(t){return"".concat(D_(t.path)).concat((e=t.parameters,Object.keys(e).map((function(t){return";".concat(D_(t),"=").concat(D_(e[t]))})).join("")));var e}var P_=/^[^\/()?;=#]+/;function O_(t){var e=t.match(P_);return e?e[0]:""}var A_=/^[^=?&#]+/,I_=/^[^?&#]+/,Y_=function(){function t(e){_(this,t),this.url=e,this.remaining=e}return b(t,[{key:"parseRootSegment",value:function(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new v_([],{}):new v_([],this.parseChildren())}},{key:"parseQueryParams",value:function(){var t={};if(this.consumeOptional("?"))do{this.parseQueryParam(t)}while(this.consumeOptional("&"));return t}},{key:"parseFragment",value:function(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}},{key:"parseChildren",value:function(){if(""===this.remaining)return{};this.consumeOptional("/");var t=[];for(this.peekStartsWith("(")||t.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),t.push(this.parseSegment());var e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));var n={};return this.peekStartsWith("(")&&(n=this.parseParens(!1)),(t.length>0||Object.keys(e).length>0)&&(n.primary=new v_(t,e)),n}},{key:"parseSegment",value:function(){var t=O_(this.remaining);if(""===t&&this.peekStartsWith(";"))throw new Error("Empty path url segment cannot have parameters: '".concat(this.remaining,"'."));return this.capture(t),new __(L_(t),this.parseMatrixParams())}},{key:"parseMatrixParams",value:function(){for(var t={};this.consumeOptional(";");)this.parseParam(t);return t}},{key:"parseParam",value:function(t){var e=O_(this.remaining);if(e){this.capture(e);var n="";if(this.consumeOptional("=")){var i=O_(this.remaining);i&&this.capture(n=i)}t[L_(e)]=L_(n)}}},{key:"parseQueryParam",value:function(t){var e,n=(e=this.remaining.match(A_))?e[0]:"";if(n){this.capture(n);var i="";if(this.consumeOptional("=")){var r=function(t){var e=t.match(I_);return e?e[0]:""}(this.remaining);r&&this.capture(i=r)}var a=T_(n),o=T_(i);if(t.hasOwnProperty(a)){var s=t[a];Array.isArray(s)||(t[a]=s=[s]),s.push(o)}else t[a]=o}}},{key:"parseParens",value:function(t){var e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){var n=O_(this.remaining),i=this.remaining[n.length];if("/"!==i&&")"!==i&&";"!==i)throw new Error("Cannot parse url '".concat(this.url,"'"));var r=void 0;n.indexOf(":")>-1?(r=n.substr(0,n.indexOf(":")),this.capture(r),this.capture(":")):t&&(r="primary");var a=this.parseChildren();e[r]=1===Object.keys(a).length?a.primary:new v_([],a),this.consumeOptional("//")}return e}},{key:"peekStartsWith",value:function(t){return this.remaining.startsWith(t)}},{key:"consumeOptional",value:function(t){return!!this.peekStartsWith(t)&&(this.remaining=this.remaining.substring(t.length),!0)}},{key:"capture",value:function(t){if(!this.consumeOptional(t))throw new Error('Expected "'.concat(t,'".'))}}]),t}(),F_=function(){function t(e){_(this,t),this._root=e}return b(t,[{key:"parent",value:function(t){var e=this.pathFromRoot(t);return e.length>1?e[e.length-2]:null}},{key:"children",value:function(t){var e=R_(t,this._root);return e?e.children.map((function(t){return t.value})):[]}},{key:"firstChild",value:function(t){var e=R_(t,this._root);return e&&e.children.length>0?e.children[0].value:null}},{key:"siblings",value:function(t){var e=N_(t,this._root);return e.length<2?[]:e[e.length-2].children.map((function(t){return t.value})).filter((function(e){return e!==t}))}},{key:"pathFromRoot",value:function(t){return N_(t,this._root).map((function(t){return t.value}))}},{key:"root",get:function(){return this._root.value}}]),t}();function R_(t,e){if(t===e.value)return e;var n,i=d(e.children);try{for(i.s();!(n=i.n()).done;){var r=R_(t,n.value);if(r)return r}}catch(a){i.e(a)}finally{i.f()}return null}function N_(t,e){if(t===e.value)return[e];var n,i=d(e.children);try{for(i.s();!(n=i.n()).done;){var r=N_(t,n.value);if(r.length)return r.unshift(e),r}}catch(a){i.e(a)}finally{i.f()}return[]}var H_=function(){function t(e,n){_(this,t),this.value=e,this.children=n}return b(t,[{key:"toString",value:function(){return"TreeNode(".concat(this.value,")")}}]),t}();function j_(t){var e={};return t&&t.children.forEach((function(t){return e[t.value.outlet]=t})),e}var B_=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t)).snapshot=i,K_(a(r),t),r}return b(n,[{key:"toString",value:function(){return this.snapshot.toString()}}]),n}(F_);function V_(t,e){var n=function(t,e){var n=new q_([],{},{},"",{},"primary",e,null,t.root,-1,{});return new G_("",new H_(n,[]))}(t,e),i=new Qg([new __("",{})]),r=new Qg({}),a=new Qg({}),o=new Qg({}),s=new Qg(""),l=new z_(i,r,o,s,a,"primary",e,n.root);return l.snapshot=n.root,new B_(new H_(l,[]),n)}var z_=function(){function t(e,n,i,r,a,o,s,l){_(this,t),this.url=e,this.params=n,this.queryParams=i,this.fragment=r,this.data=a,this.outlet=o,this.component=s,this._futureSnapshot=l}return b(t,[{key:"toString",value:function(){return this.snapshot?this.snapshot.toString():"Future(".concat(this._futureSnapshot,")")}},{key:"routeConfig",get:function(){return this._futureSnapshot.routeConfig}},{key:"root",get:function(){return this._routerState.root}},{key:"parent",get:function(){return this._routerState.parent(this)}},{key:"firstChild",get:function(){return this._routerState.firstChild(this)}},{key:"children",get:function(){return this._routerState.children(this)}},{key:"pathFromRoot",get:function(){return this._routerState.pathFromRoot(this)}},{key:"paramMap",get:function(){return this._paramMap||(this._paramMap=this.params.pipe(nt((function(t){return o_(t)})))),this._paramMap}},{key:"queryParamMap",get:function(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(nt((function(t){return o_(t)})))),this._queryParamMap}}]),t}();function W_(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"emptyOnly",n=t.pathFromRoot,i=0;if("always"!==e)for(i=n.length-1;i>=1;){var r=n[i],a=n[i-1];if(r.routeConfig&&""===r.routeConfig.path)i--;else{if(a.component)break;i--}}return U_(n.slice(i))}function U_(t){return t.reduce((function(t,e){return{params:Object.assign(Object.assign({},t.params),e.params),data:Object.assign(Object.assign({},t.data),e.data),resolve:Object.assign(Object.assign({},t.resolve),e._resolvedData)}}),{params:{},data:{},resolve:{}})}var q_=function(){function t(e,n,i,r,a,o,s,l,u,c,d){_(this,t),this.url=e,this.params=n,this.queryParams=i,this.fragment=r,this.data=a,this.outlet=o,this.component=s,this.routeConfig=l,this._urlSegment=u,this._lastPathIndex=c,this._resolve=d}return b(t,[{key:"toString",value:function(){var t=this.url.map((function(t){return t.toString()})).join("/"),e=this.routeConfig?this.routeConfig.path:"";return"Route(url:'".concat(t,"', path:'").concat(e,"')")}},{key:"root",get:function(){return this._routerState.root}},{key:"parent",get:function(){return this._routerState.parent(this)}},{key:"firstChild",get:function(){return this._routerState.firstChild(this)}},{key:"children",get:function(){return this._routerState.children(this)}},{key:"pathFromRoot",get:function(){return this._routerState.pathFromRoot(this)}},{key:"paramMap",get:function(){return this._paramMap||(this._paramMap=o_(this.params)),this._paramMap}},{key:"queryParamMap",get:function(){return this._queryParamMap||(this._queryParamMap=o_(this.queryParams)),this._queryParamMap}}]),t}(),G_=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,i)).url=t,K_(a(r),i),r}return b(n,[{key:"toString",value:function(){return J_(this._root)}}]),n}(F_);function K_(t,e){e.value._routerState=t,e.children.forEach((function(e){return K_(t,e)}))}function J_(t){var e=t.children.length>0?" { ".concat(t.children.map(J_).join(", ")," } "):"";return"".concat(t.value).concat(e)}function Z_(t){if(t.snapshot){var e=t.snapshot,n=t._futureSnapshot;t.snapshot=n,u_(e.queryParams,n.queryParams)||t.queryParams.next(n.queryParams),e.fragment!==n.fragment&&t.fragment.next(n.fragment),u_(e.params,n.params)||t.params.next(n.params),function(t,e){if(t.length!==e.length)return!1;for(var n=0;nr;){if(a-=r,!(i=i.parent))throw new Error("Invalid number of '../'");r=i.segments.length}return new ny(i,!1,r-a)}(n.snapshot._urlSegment,n.snapshot._lastPathIndex+r,t.numberOfDoubleDots)}(a,e,t),s=o.processChildren?ay(o.segmentGroup,o.index,a.commands):ry(o.segmentGroup,o.index,a.commands);return ty(o.segmentGroup,s,e,i,r)}function X_(t){return"object"==typeof t&&null!=t&&!t.outlets&&!t.segmentPath}function ty(t,e,n,i,r){var a={};return i&&f_(i,(function(t,e){a[e]=Array.isArray(t)?t.map((function(t){return"".concat(t)})):"".concat(t)})),new g_(n.root===t?e:function t(e,n,i){var r={};return f_(e.children,(function(e,a){r[a]=e===n?i:t(e,n,i)})),new v_(e.segments,r)}(n.root,t,e),a,r)}var ey=function(){function t(e,n,i){if(_(this,t),this.isAbsolute=e,this.numberOfDoubleDots=n,this.commands=i,e&&i.length>0&&X_(i[0]))throw new Error("Root segment cannot have matrix parameters");var r=i.find((function(t){return"object"==typeof t&&null!=t&&t.outlets}));if(r&&r!==h_(i))throw new Error("{outlets:{}} has to be the last command")}return b(t,[{key:"toRoot",value:function(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}]),t}(),ny=function t(e,n,i){_(this,t),this.segmentGroup=e,this.processChildren=n,this.index=i};function iy(t){return"object"==typeof t&&null!=t&&t.outlets?t.outlets.primary:"".concat(t)}function ry(t,e,n){if(t||(t=new v_([],{})),0===t.segments.length&&t.hasChildren())return ay(t,e,n);var i=function(t,e,n){for(var i=0,r=e,a={match:!1,pathIndex:0,commandIndex:0};r=n.length)return a;var o=t.segments[r],s=iy(n[i]),l=i0&&void 0===s)break;if(s&&l&&"object"==typeof l&&void 0===l.outlets){if(!uy(s,l,o))return a;i+=2}else{if(!uy(s,{},o))return a;i++}r++}return{match:!0,pathIndex:r,commandIndex:i}}(t,e,n),r=n.slice(i.commandIndex);if(i.match&&i.pathIndex0?new v_([],c({},"primary",t)):t;return new g_(i,e,n)}},{key:"expandSegmentGroup",value:function(t,e,n,i){return 0===n.segments.length&&n.hasChildren()?this.expandChildren(t,e,n).pipe(nt((function(t){return new v_([],t)}))):this.expandSegment(t,n,e,n.segments,i,!0)}},{key:"expandChildren",value:function(t,e,n){var i=this;return function(n,r){if(0===Object.keys(n).length)return pg({});var a=[],o=[],s={};return f_(n,(function(n,r){var l,u,c=(l=r,u=n,i.expandSegmentGroup(t,e,u,l)).pipe(nt((function(t){return s[r]=t})));"primary"===r?a.push(c):o.push(c)})),pg.apply(null,a.concat(o)).pipe(sv(),function(t,e){var n=arguments.length>=2;return function(i){return i.pipe(t?gg((function(e,n){return t(e,n,i)})):ct,uv(1),n?gv(e):hv((function(){return new Xg})))}}(),nt((function(){return s})))}(n.children)}},{key:"expandSegment",value:function(t,e,n,i,r,a){var o=this;return pg.apply(void 0,u(n)).pipe(nt((function(s){return o.expandSegmentAgainstRoute(t,e,n,s,i,r,a).pipe(yv((function(t){if(t instanceof my)return pg(null);throw t})))})),sv(),xv((function(t){return!!t})),yv((function(t,n){if(t instanceof Xg||"EmptyError"===t.name){if(o.noLeftoversInUrl(e,i,r))return pg(new v_([],{}));throw new my(e)}throw t})))}},{key:"noLeftoversInUrl",value:function(t,e,n){return 0===e.length&&!t.children[n]}},{key:"expandSegmentAgainstRoute",value:function(t,e,n,i,r,a,o){return Sy(i)!==a?vy(e):void 0===i.redirectTo?this.matchSegmentAgainstRoute(t,e,i,r):o&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(t,e,n,i,r,a):vy(e)}},{key:"expandSegmentAgainstRouteUsingRedirect",value:function(t,e,n,i,r,a){return"**"===i.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(t,n,i,a):this.expandRegularSegmentAgainstRouteUsingRedirect(t,e,n,i,r,a)}},{key:"expandWildCardWithParamsAgainstRouteUsingRedirect",value:function(t,e,n,i){var r=this,a=this.applyRedirectCommands([],n.redirectTo,{});return n.redirectTo.startsWith("/")?_y(a):this.lineralizeSegments(n,a).pipe(st((function(n){var a=new v_(n,{});return r.expandSegment(t,a,e,n,i,!1)})))}},{key:"expandRegularSegmentAgainstRouteUsingRedirect",value:function(t,e,n,i,r,a){var o=this,s=ky(e,i,r),l=s.consumedSegments,u=s.lastChild,c=s.positionalParamSegments;if(!s.matched)return vy(e);var d=this.applyRedirectCommands(l,i.redirectTo,c);return i.redirectTo.startsWith("/")?_y(d):this.lineralizeSegments(i,d).pipe(st((function(i){return o.expandSegment(t,e,n,i.concat(r.slice(u)),a,!1)})))}},{key:"matchSegmentAgainstRoute",value:function(t,e,n,i){var r=this;if("**"===n.path)return n.loadChildren?this.configLoader.load(t.injector,n).pipe(nt((function(t){return n._loadedConfig=t,new v_(i,{})}))):pg(new v_(i,{}));var a=ky(e,n,i),o=a.consumedSegments,s=a.lastChild;if(!a.matched)return vy(e);var l=i.slice(s);return this.getChildConfig(t,n,i).pipe(st((function(t){var n=t.module,i=t.routes,a=function(t,e,n,i){return n.length>0&&function(t,e,n){return n.some((function(n){return My(t,e,n)&&"primary"!==Sy(n)}))}(t,n,i)?{segmentGroup:wy(new v_(e,function(t,e){var n={};n.primary=e;var i,r=d(t);try{for(r.s();!(i=r.n()).done;){var a=i.value;""===a.path&&"primary"!==Sy(a)&&(n[Sy(a)]=new v_([],{}))}}catch(o){r.e(o)}finally{r.f()}return n}(i,new v_(n,t.children)))),slicedSegments:[]}:0===n.length&&function(t,e,n){return n.some((function(n){return My(t,e,n)}))}(t,n,i)?{segmentGroup:wy(new v_(t.segments,function(t,e,n,i){var r,a={},o=d(n);try{for(o.s();!(r=o.n()).done;){var s=r.value;My(t,e,s)&&!i[Sy(s)]&&(a[Sy(s)]=new v_([],{}))}}catch(l){o.e(l)}finally{o.f()}return Object.assign(Object.assign({},i),a)}(t,n,i,t.children))),slicedSegments:n}:{segmentGroup:t,slicedSegments:n}}(e,o,l,i),s=a.segmentGroup,u=a.slicedSegments;return 0===u.length&&s.hasChildren()?r.expandChildren(n,i,s).pipe(nt((function(t){return new v_(o,t)}))):0===i.length&&0===u.length?pg(new v_(o,{})):r.expandSegment(n,s,i,u,"primary",!0).pipe(nt((function(t){return new v_(o.concat(t.segments),t.children)})))})))}},{key:"getChildConfig",value:function(t,e,n){var i=this;return e.children?pg(new hy(e.children,t)):e.loadChildren?void 0!==e._loadedConfig?pg(e._loadedConfig):this.runCanLoadGuards(t.injector,e,n).pipe(st((function(n){return n?i.configLoader.load(t.injector,e).pipe(nt((function(t){return e._loadedConfig=t,t}))):function(t){return new H((function(e){return e.error(s_("Cannot load children because the guard of the route \"path: '".concat(t.path,"'\" returned false")))}))}(e)}))):pg(new hy([],t))}},{key:"runCanLoadGuards",value:function(t,e,n){var i,r=this,a=e.canLoad;return a&&0!==a.length?ot(a).pipe(nt((function(i){var r,a=t.get(i);if(function(t){return t&&fy(t.canLoad)}(a))r=a.canLoad(e,n);else{if(!fy(a))throw new Error("Invalid CanLoad guard");r=a(e,n)}return p_(r)}))).pipe(sv(),Cv((function(t){if(py(t)){var e=s_('Redirecting to "'.concat(r.urlSerializer.serialize(t),'"'));throw e.url=t,e}})),(i=function(t){return!0===t},function(t){return t.lift(new Tv(i,void 0,t))})):pg(!0)}},{key:"lineralizeSegments",value:function(t,e){for(var n=[],i=e.root;;){if(n=n.concat(i.segments),0===i.numberOfChildren)return pg(n);if(i.numberOfChildren>1||!i.children.primary)return yy(t.redirectTo);i=i.children.primary}}},{key:"applyRedirectCommands",value:function(t,e,n){return this.applyRedirectCreatreUrlTree(e,this.urlSerializer.parse(e),t,n)}},{key:"applyRedirectCreatreUrlTree",value:function(t,e,n,i){var r=this.createSegmentGroup(t,e.root,n,i);return new g_(r,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}},{key:"createQueryParams",value:function(t,e){var n={};return f_(t,(function(t,i){if("string"==typeof t&&t.startsWith(":")){var r=t.substring(1);n[i]=e[r]}else n[i]=t})),n}},{key:"createSegmentGroup",value:function(t,e,n,i){var r=this,a=this.createSegments(t,e.segments,n,i),o={};return f_(e.children,(function(e,a){o[a]=r.createSegmentGroup(t,e,n,i)})),new v_(a,o)}},{key:"createSegments",value:function(t,e,n,i){var r=this;return e.map((function(e){return e.path.startsWith(":")?r.findPosParam(t,e,i):r.findOrReturn(e,n)}))}},{key:"findPosParam",value:function(t,e,n){var i=n[e.path.substring(1)];if(!i)throw new Error("Cannot redirect to '".concat(t,"'. Cannot find '").concat(e.path,"'."));return i}},{key:"findOrReturn",value:function(t,e){var n,i=0,r=d(e);try{for(r.s();!(n=r.n()).done;){var a=n.value;if(a.path===t.path)return e.splice(i),a;i++}}catch(o){r.e(o)}finally{r.f()}return t}}]),t}();function ky(t,e,n){if(""===e.path)return"full"===e.pathMatch&&(t.hasChildren()||n.length>0)?{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}:{matched:!0,consumedSegments:[],lastChild:0,positionalParamSegments:{}};var i=(e.matcher||l_)(n,t,e);return i?{matched:!0,consumedSegments:i.consumed,lastChild:i.consumed.length,positionalParamSegments:i.posParams}:{matched:!1,consumedSegments:[],lastChild:0,positionalParamSegments:{}}}function wy(t){if(1===t.numberOfChildren&&t.children.primary){var e=t.children.primary;return new v_(t.segments.concat(e.segments),e.children)}return t}function My(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0!==n.redirectTo}function Sy(t){return t.outlet||"primary"}var xy=function t(e){_(this,t),this.path=e,this.route=this.path[this.path.length-1]},Cy=function t(e,n){_(this,t),this.component=e,this.route=n};function Dy(t,e,n){var i=function(t){if(!t)return null;for(var e=t.parent;e;e=e.parent){var n=e.routeConfig;if(n&&n._loadedConfig)return n._loadedConfig}return null}(e);return(i?i.module.injector:n).get(t)}function Ly(t,e,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{canDeactivateChecks:[],canActivateChecks:[]},a=j_(e);return t.children.forEach((function(t){Ty(t,a[t.value.outlet],n,i.concat([t.value]),r),delete a[t.value.outlet]})),f_(a,(function(t,e){return Py(t,n.getContext(e),r)})),r}function Ty(t,e,n,i){var r=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{canDeactivateChecks:[],canActivateChecks:[]},a=t.value,o=e?e.value:null,s=n?n.getContext(t.value.outlet):null;if(o&&a.routeConfig===o.routeConfig){var l=Ey(o,a,a.routeConfig.runGuardsAndResolvers);if(l?r.canActivateChecks.push(new xy(i)):(a.data=o.data,a._resolvedData=o._resolvedData),Ly(t,e,a.component?s?s.children:null:n,i,r),l){var u=s&&s.outlet&&s.outlet.component||null;r.canDeactivateChecks.push(new Cy(u,o))}}else o&&Py(e,s,r),r.canActivateChecks.push(new xy(i)),Ly(t,null,a.component?s?s.children:null:n,i,r);return r}function Ey(t,e,n){if("function"==typeof n)return n(t,e);switch(n){case"pathParamsChange":return!y_(t.url,e.url);case"pathParamsOrQueryParamsChange":return!y_(t.url,e.url)||!u_(t.queryParams,e.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!$_(t,e)||!u_(t.queryParams,e.queryParams);case"paramsChange":default:return!$_(t,e)}}function Py(t,e,n){var i=j_(t),r=t.value;f_(i,(function(t,i){Py(t,r.component?e?e.children.getContext(i):null:e,n)})),n.canDeactivateChecks.push(new Cy(r.component&&e&&e.outlet&&e.outlet.isActivated?e.outlet.component:null,r))}var Oy=Symbol("INITIAL_VALUE");function Ay(){return Pv((function(t){return ev.apply(void 0,u(t.map((function(t){return t.pipe(wv(1),Yv(Oy))})))).pipe(Fv((function(t,e){var n=!1;return e.reduce((function(t,i,r){if(t!==Oy)return t;if(i===Oy&&(n=!0),!n){if(!1===i)return i;if(r===e.length-1||py(i))return i}return t}),t)}),Oy),gg((function(t){return t!==Oy})),nt((function(t){return py(t)?t:!0===t})),wv(1))}))}function Iy(t,e){return null!==t&&e&&e(new n_(t)),pg(!0)}function Yy(t,e){return null!==t&&e&&e(new t_(t)),pg(!0)}function Fy(t,e,n){var i=e.routeConfig?e.routeConfig.canActivate:null;return i&&0!==i.length?pg(i.map((function(i){return ov((function(){var r,a=Dy(i,e,n);if(function(t){return t&&fy(t.canActivate)}(a))r=p_(a.canActivate(e,t));else{if(!fy(a))throw new Error("Invalid CanActivate guard");r=p_(a(e,t))}return r.pipe(xv())}))}))).pipe(Ay()):pg(!0)}function Ry(t,e,n){var i=e[e.length-1],r=e.slice(0,e.length-1).reverse().map((function(t){return function(t){var e=t.routeConfig?t.routeConfig.canActivateChild:null;return e&&0!==e.length?{node:t,guards:e}:null}(t)})).filter((function(t){return null!==t})).map((function(e){return ov((function(){return pg(e.guards.map((function(r){var a,o=Dy(r,e.node,n);if(function(t){return t&&fy(t.canActivateChild)}(o))a=p_(o.canActivateChild(i,t));else{if(!fy(o))throw new Error("Invalid CanActivateChild guard");a=p_(o(i,t))}return a.pipe(xv())}))).pipe(Ay())}))}));return pg(r).pipe(Ay())}var Ny=function t(){_(this,t)},Hy=function(){function t(e,n,i,r,a,o){_(this,t),this.rootComponentType=e,this.config=n,this.urlTree=i,this.url=r,this.paramsInheritanceStrategy=a,this.relativeLinkResolution=o}return b(t,[{key:"recognize",value:function(){try{var t=Vy(this.urlTree.root,[],[],this.config,this.relativeLinkResolution).segmentGroup,e=this.processSegmentGroup(this.config,t,"primary"),n=new q_([],Object.freeze({}),Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,{},"primary",this.rootComponentType,null,this.urlTree.root,-1,{}),i=new H_(n,e),r=new G_(this.url,i);return this.inheritParamsAndData(r._root),pg(r)}catch(a){return new H((function(t){return t.error(a)}))}}},{key:"inheritParamsAndData",value:function(t){var e=this,n=t.value,i=W_(n,this.paramsInheritanceStrategy);n.params=Object.freeze(i.params),n.data=Object.freeze(i.data),t.children.forEach((function(t){return e.inheritParamsAndData(t)}))}},{key:"processSegmentGroup",value:function(t,e,n){return 0===e.segments.length&&e.hasChildren()?this.processChildren(t,e):this.processSegment(t,e,e.segments,n)}},{key:"processChildren",value:function(t,e){var n,i=this,r=b_(e,(function(e,n){return i.processSegmentGroup(t,e,n)}));return n={},r.forEach((function(t){var e=n[t.value.outlet];if(e){var i=e.url.map((function(t){return t.toString()})).join("/"),r=t.value.url.map((function(t){return t.toString()})).join("/");throw new Error("Two segments cannot have the same outlet name: '".concat(i,"' and '").concat(r,"'."))}n[t.value.outlet]=t.value})),function(t){t.sort((function(t,e){return"primary"===t.value.outlet?-1:"primary"===e.value.outlet?1:t.value.outlet.localeCompare(e.value.outlet)}))}(r),r}},{key:"processSegment",value:function(t,e,n,i){var r,a=d(t);try{for(a.s();!(r=a.n()).done;){var o=r.value;try{return this.processSegmentAgainstRoute(o,e,n,i)}catch(s){if(!(s instanceof Ny))throw s}}}catch(l){a.e(l)}finally{a.f()}if(this.noLeftoversInUrl(e,n,i))return[];throw new Ny}},{key:"noLeftoversInUrl",value:function(t,e,n){return 0===e.length&&!t.children[n]}},{key:"processSegmentAgainstRoute",value:function(t,e,n,i){if(t.redirectTo)throw new Ny;if((t.outlet||"primary")!==i)throw new Ny;var r,a=[],o=[];if("**"===t.path){var s=n.length>0?h_(n).parameters:{};r=new q_(n,s,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Uy(t),i,t.component,t,jy(e),By(e)+n.length,qy(t))}else{var l=function(t,e,n){if(""===e.path){if("full"===e.pathMatch&&(t.hasChildren()||n.length>0))throw new Ny;return{consumedSegments:[],lastChild:0,parameters:{}}}var i=(e.matcher||l_)(n,t,e);if(!i)throw new Ny;var r={};f_(i.posParams,(function(t,e){r[e]=t.path}));var a=i.consumed.length>0?Object.assign(Object.assign({},r),i.consumed[i.consumed.length-1].parameters):r;return{consumedSegments:i.consumed,lastChild:i.consumed.length,parameters:a}}(e,t,n);a=l.consumedSegments,o=n.slice(l.lastChild),r=new q_(a,l.parameters,Object.freeze(Object.assign({},this.urlTree.queryParams)),this.urlTree.fragment,Uy(t),i,t.component,t,jy(e),By(e)+a.length,qy(t))}var u=function(t){return t.children?t.children:t.loadChildren?t._loadedConfig.routes:[]}(t),c=Vy(e,a,o,u,this.relativeLinkResolution),d=c.segmentGroup,h=c.slicedSegments;if(0===h.length&&d.hasChildren()){var f=this.processChildren(u,d);return[new H_(r,f)]}if(0===u.length&&0===h.length)return[new H_(r,[])];var p=this.processSegment(u,d,h,"primary");return[new H_(r,p)]}}]),t}();function jy(t){for(var e=t;e._sourceSegment;)e=e._sourceSegment;return e}function By(t){for(var e=t,n=e._segmentIndexShift?e._segmentIndexShift:0;e._sourceSegment;)n+=(e=e._sourceSegment)._segmentIndexShift?e._segmentIndexShift:0;return n-1}function Vy(t,e,n,i,r){if(n.length>0&&function(t,e,n){return n.some((function(n){return zy(t,e,n)&&"primary"!==Wy(n)}))}(t,n,i)){var a=new v_(e,function(t,e,n,i){var r={};r.primary=i,i._sourceSegment=t,i._segmentIndexShift=e.length;var a,o=d(n);try{for(o.s();!(a=o.n()).done;){var s=a.value;if(""===s.path&&"primary"!==Wy(s)){var l=new v_([],{});l._sourceSegment=t,l._segmentIndexShift=e.length,r[Wy(s)]=l}}}catch(u){o.e(u)}finally{o.f()}return r}(t,e,i,new v_(n,t.children)));return a._sourceSegment=t,a._segmentIndexShift=e.length,{segmentGroup:a,slicedSegments:[]}}if(0===n.length&&function(t,e,n){return n.some((function(n){return zy(t,e,n)}))}(t,n,i)){var o=new v_(t.segments,function(t,e,n,i,r,a){var o,s={},l=d(i);try{for(l.s();!(o=l.n()).done;){var u=o.value;if(zy(t,n,u)&&!r[Wy(u)]){var c=new v_([],{});c._sourceSegment=t,c._segmentIndexShift="legacy"===a?t.segments.length:e.length,s[Wy(u)]=c}}}catch(h){l.e(h)}finally{l.f()}return Object.assign(Object.assign({},r),s)}(t,e,n,i,t.children,r));return o._sourceSegment=t,o._segmentIndexShift=e.length,{segmentGroup:o,slicedSegments:n}}var s=new v_(t.segments,t.children);return s._sourceSegment=t,s._segmentIndexShift=e.length,{segmentGroup:s,slicedSegments:n}}function zy(t,e,n){return(!(t.hasChildren()||e.length>0)||"full"!==n.pathMatch)&&""===n.path&&void 0===n.redirectTo}function Wy(t){return t.outlet||"primary"}function Uy(t){return t.data||{}}function qy(t){return t.resolve||{}}function Gy(t){return function(e){return e.pipe(Pv((function(e){var n=t(e);return n?ot(n).pipe(nt((function(){return e}))):ot([e])})))}}var Ky=function t(){_(this,t)},Jy=function(){function t(){_(this,t)}return b(t,[{key:"shouldDetach",value:function(t){return!1}},{key:"store",value:function(t,e){}},{key:"shouldAttach",value:function(t){return!1}},{key:"retrieve",value:function(t){return null}},{key:"shouldReuseRoute",value:function(t,e){return t.routeConfig===e.routeConfig}}]),t}(),Zy=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["ng-component"]],decls:1,vars:0,template:function(t,e){1&t&&cs(0,"router-outlet")},directives:function(){return[mb]},encapsulation:2}),t}();function $y(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=0;n4&&void 0!==arguments[4]?arguments[4]:"emptyOnly",a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"legacy";return new Hy(t,e,n,i,r,a).recognize()}(t,n,i.urlAfterRedirects,(o=i.urlAfterRedirects,e.serializeUrl(o)),r,a).pipe(nt((function(t){return Object.assign(Object.assign({},i),{targetSnapshot:t})})));var o})))}}(e.rootComponentType,e.config,0,e.paramsInheritanceStrategy,e.relativeLinkResolution),Cv((function(t){"eager"===e.urlUpdateStrategy&&(t.extras.skipLocationChange||e.setBrowserUrl(t.urlAfterRedirects,!!t.extras.replaceUrl,t.id,t.extras.state),e.browserUrlTree=t.urlAfterRedirects)})),Cv((function(t){var i=new Gv(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);n.next(i)})));if(s&&e.rawUrlTree&&e.urlHandlingStrategy.shouldProcessUrl(e.rawUrlTree)){var l=t.extractedUrl,u=t.source,c=t.restoredState,d=t.extras,h=new zv(t.id,e.serializeUrl(l),u,c);n.next(h);var f=V_(l,e.rootComponentType).snapshot;return pg(Object.assign(Object.assign({},t),{targetSnapshot:f,urlAfterRedirects:l,extras:Object.assign(Object.assign({},d),{skipLocationChange:!1,replaceUrl:!1})}))}return e.rawUrlTree=t.rawUrl,e.browserUrlTree=t.urlAfterRedirects,t.resolve(null),rv})),Gy((function(t){var n=t.extras;return e.hooks.beforePreactivation(t.targetSnapshot,{navigationId:t.id,appliedUrlTree:t.extractedUrl,rawUrlTree:t.rawUrl,skipLocationChange:!!n.skipLocationChange,replaceUrl:!!n.replaceUrl})})),Cv((function(t){var n=new Kv(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)})),nt((function(t){return Object.assign(Object.assign({},t),{guards:(n=t.targetSnapshot,i=t.currentSnapshot,r=e.rootContexts,a=n._root,Ly(a,i?i._root:null,r,[a.value]))});var n,i,r,a})),function(t,e){return function(n){return n.pipe(st((function(n){var i=n.targetSnapshot,r=n.currentSnapshot,a=n.guards,o=a.canActivateChecks,s=a.canDeactivateChecks;return 0===s.length&&0===o.length?pg(Object.assign(Object.assign({},n),{guardsResult:!0})):function(t,e,n,i){return ot(t).pipe(st((function(t){return function(t,e,n,i,r){var a=e&&e.routeConfig?e.routeConfig.canDeactivate:null;return a&&0!==a.length?pg(a.map((function(a){var o,s=Dy(a,e,r);if(function(t){return t&&fy(t.canDeactivate)}(s))o=p_(s.canDeactivate(t,e,n,i));else{if(!fy(s))throw new Error("Invalid CanDeactivate guard");o=p_(s(t,e,n,i))}return o.pipe(xv())}))).pipe(Ay()):pg(!0)}(t.component,t.route,n,e,i)})),xv((function(t){return!0!==t}),!0))}(s,i,r,t).pipe(st((function(n){return n&&"boolean"==typeof n?function(t,e,n,i){return ot(e).pipe(mg((function(e){return ot([Yy(e.route.parent,i),Iy(e.route,i),Ry(t,e.path,n),Fy(t,e.route,n)]).pipe(sv(),xv((function(t){return!0!==t}),!0))})),xv((function(t){return!0!==t}),!0))}(i,o,t,e):pg(n)})),nt((function(t){return Object.assign(Object.assign({},n),{guardsResult:t})})))})))}}(e.ngModule.injector,(function(t){return e.triggerEvent(t)})),Cv((function(t){if(py(t.guardsResult)){var n=s_('Redirecting to "'.concat(e.serializeUrl(t.guardsResult),'"'));throw n.url=t.guardsResult,n}})),Cv((function(t){var n=new Jv(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot,!!t.guardsResult);e.triggerEvent(n)})),gg((function(t){if(!t.guardsResult){e.resetUrlToCurrentUrlTree();var i=new Uv(t.id,e.serializeUrl(t.extractedUrl),"");return n.next(i),t.resolve(!1),!1}return!0})),Gy((function(t){if(t.guards.canActivateChecks.length)return pg(t).pipe(Cv((function(t){var n=new Zv(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)})),Pv((function(t){var i,r,a=!1;return pg(t).pipe((i=e.paramsInheritanceStrategy,r=e.ngModule.injector,function(t){return t.pipe(st((function(t){var e=t.targetSnapshot,n=t.guards.canActivateChecks;if(!n.length)return pg(t);var a=0;return ot(n).pipe(mg((function(t){return function(t,e,n,i){return function(t,e,n,i){var r=Object.keys(t);if(0===r.length)return pg({});var a={};return ot(r).pipe(st((function(r){return function(t,e,n,i){var r=Dy(t,e,i);return p_(r.resolve?r.resolve(e,n):r(e,n))}(t[r],e,n,i).pipe(Cv((function(t){a[r]=t})))})),uv(1),st((function(){return Object.keys(a).length===r.length?pg(a):rv})))}(t._resolve,t,e,i).pipe(nt((function(e){return t._resolvedData=e,t.data=Object.assign(Object.assign({},t.data),W_(t,n).resolve),null})))}(t.route,e,i,r)})),Cv((function(){return a++})),uv(1),st((function(e){return a===n.length?pg(t):rv})))})))}),Cv({next:function(){return a=!0},complete:function(){if(!a){var i=new Uv(t.id,e.serializeUrl(t.extractedUrl),"At least one route resolver didn't emit any value.");n.next(i),t.resolve(!1)}}}))})),Cv((function(t){var n=new $v(t.id,e.serializeUrl(t.extractedUrl),e.serializeUrl(t.urlAfterRedirects),t.targetSnapshot);e.triggerEvent(n)})))})),Gy((function(t){var n=t.extras;return e.hooks.afterPreactivation(t.targetSnapshot,{navigationId:t.id,appliedUrlTree:t.extractedUrl,rawUrlTree:t.rawUrl,skipLocationChange:!!n.skipLocationChange,replaceUrl:!!n.replaceUrl})})),nt((function(t){var n,i,r,a=(r=function t(e,n,i){if(i&&e.shouldReuseRoute(n.value,i.value.snapshot)){var r=i.value;r._futureSnapshot=n.value;var a=function(e,n,i){return n.children.map((function(n){var r,a=d(i.children);try{for(a.s();!(r=a.n()).done;){var o=r.value;if(e.shouldReuseRoute(o.value.snapshot,n.value))return t(e,n,o)}}catch(s){a.e(s)}finally{a.f()}return t(e,n)}))}(e,n,i);return new H_(r,a)}var o=e.retrieve(n.value);if(o){var s=o.route;return function t(e,n){if(e.value.routeConfig!==n.value.routeConfig)throw new Error("Cannot reattach ActivatedRouteSnapshot created from a different route");if(e.children.length!==n.children.length)throw new Error("Cannot reattach ActivatedRouteSnapshot with a different number of children");n.value._futureSnapshot=e.value;for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{},n=e.relativeTo,i=e.queryParams,r=e.fragment,a=e.preserveQueryParams,o=e.queryParamsHandling,s=e.preserveFragment;ir()&&a&&console&&console.warn&&console.warn("preserveQueryParams is deprecated, use queryParamsHandling instead.");var l=n||this.routerState.root,u=s?this.currentUrlTree.fragment:r,c=null;if(o)switch(o){case"merge":c=Object.assign(Object.assign({},this.currentUrlTree.queryParams),i);break;case"preserve":c=this.currentUrlTree.queryParams;break;default:c=i||null}else c=a?this.currentUrlTree.queryParams:i||null;return null!==c&&(c=this.removeEmptyProps(c)),Q_(l,this.currentUrlTree,t,c,u)}},{key:"navigateByUrl",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{skipLocationChange:!1};ir()&&this.isNgZoneEnabled&&!Mc.isInAngularZone()&&this.console.warn("Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?");var n=py(t)?t:this.parseUrl(t),i=this.urlHandlingStrategy.merge(n,this.rawUrlTree);return this.scheduleNavigation(i,"imperative",null,e)}},{key:"navigate",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{skipLocationChange:!1};return cb(t),this.navigateByUrl(this.createUrlTree(t,e),e)}},{key:"serializeUrl",value:function(t){return this.urlSerializer.serialize(t)}},{key:"parseUrl",value:function(t){var e;try{e=this.urlSerializer.parse(t)}catch(n){e=this.malformedUriErrorHandler(n,this.urlSerializer,t)}return e}},{key:"isActive",value:function(t,e){if(py(t))return m_(this.currentUrlTree,t,e);var n=this.parseUrl(t);return m_(this.currentUrlTree,n,e)}},{key:"removeEmptyProps",value:function(t){return Object.keys(t).reduce((function(e,n){var i=t[n];return null!=i&&(e[n]=i),e}),{})}},{key:"processNavigations",value:function(){var t=this;this.navigations.subscribe((function(e){t.navigated=!0,t.lastSuccessfulId=e.id,t.events.next(new Wv(e.id,t.serializeUrl(e.extractedUrl),t.serializeUrl(t.currentUrlTree))),t.lastSuccessfulNavigation=t.currentNavigation,t.currentNavigation=null,e.resolve(!0)}),(function(e){t.console.warn("Unhandled Navigation Error: ")}))}},{key:"scheduleNavigation",value:function(t,e,n,i,r){var a,o,s,l=this.getTransition();if(l&&"imperative"!==e&&"imperative"===l.source&&l.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(l&&"hashchange"==e&&"popstate"===l.source&&l.rawUrl.toString()===t.toString())return Promise.resolve(!0);if(l&&"popstate"==e&&"hashchange"===l.source&&l.rawUrl.toString()===t.toString())return Promise.resolve(!0);r?(a=r.resolve,o=r.reject,s=r.promise):s=new Promise((function(t,e){a=t,o=e}));var u=++this.navigationId;return this.setTransition({id:u,source:e,restoredState:n,currentUrlTree:this.currentUrlTree,currentRawUrl:this.rawUrlTree,rawUrl:t,extras:i,resolve:a,reject:o,promise:s,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),s.catch((function(t){return Promise.reject(t)}))}},{key:"setBrowserUrl",value:function(t,e,n,i){var r=this.urlSerializer.serialize(t);i=i||{},this.location.isCurrentPathEqualTo(r)||e?this.location.replaceState(r,"",Object.assign(Object.assign({},i),{navigationId:n})):this.location.go(r,"",Object.assign(Object.assign({},i),{navigationId:n}))}},{key:"resetStateAndUrl",value:function(t,e,n){this.routerState=t,this.currentUrlTree=e,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,n),this.resetUrlToCurrentUrlTree()}},{key:"resetUrlToCurrentUrlTree",value:function(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",{navigationId:this.lastSuccessfulId})}},{key:"url",get:function(){return this.serializeUrl(this.currentUrlTree)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Do),ge(k_),ge(rb),ge(_d),ge(zo),ge(qc),ge(bc),ge(void 0))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}();function cb(t){for(var e=0;e2&&void 0!==arguments[2]?arguments[2]:{};_(this,t),this.router=e,this.viewportScroller=n,this.options=i,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},i.scrollPositionRestoration=i.scrollPositionRestoration||"disabled",i.anchorScrolling=i.anchorScrolling||"disabled"}return b(t,[{key:"init",value:function(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}},{key:"createScrollEvents",value:function(){var t=this;return this.router.events.subscribe((function(e){e instanceof zv?(t.store[t.lastId]=t.viewportScroller.getScrollPosition(),t.lastSource=e.navigationTrigger,t.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Wv&&(t.lastId=e.id,t.scheduleScrollEvent(e,t.router.parseUrl(e.urlAfterRedirects).fragment))}))}},{key:"consumeScrollEvents",value:function(){var t=this;return this.router.events.subscribe((function(e){e instanceof r_&&(e.position?"top"===t.options.scrollPositionRestoration?t.viewportScroller.scrollToPosition([0,0]):"enabled"===t.options.scrollPositionRestoration&&t.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===t.options.anchorScrolling?t.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==t.options.scrollPositionRestoration&&t.viewportScroller.scrollToPosition([0,0]))}))}},{key:"scheduleScrollEvent",value:function(t,e){this.router.triggerEvent(new r_(t,"popstate"===this.lastSource?this.store[this.restoredId]:null,e))}},{key:"ngOnDestroy",value:function(){this.routerEventsSubscription&&this.routerEventsSubscription.unsubscribe(),this.scrollEventsSubscription&&this.scrollEventsSubscription.unsubscribe()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(ub),ge(af),ge(void 0))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),wb=new se("ROUTER_CONFIGURATION"),Mb=new se("ROUTER_FORROOT_GUARD"),Sb=[_d,{provide:k_,useClass:w_},{provide:ub,useFactory:function(t,e,n,i,r,a,o){var s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{},l=arguments.length>8?arguments[8]:void 0,u=arguments.length>9?arguments[9]:void 0,c=new ub(null,t,e,n,i,r,a,d_(o));if(l&&(c.urlHandlingStrategy=l),u&&(c.routeReuseStrategy=u),s.errorHandler&&(c.errorHandler=s.errorHandler),s.malformedUriErrorHandler&&(c.malformedUriErrorHandler=s.malformedUriErrorHandler),s.enableTracing){var d=ed();c.events.subscribe((function(t){d.logGroup("Router Event: ".concat(t.constructor.name)),d.log(t.toString()),d.log(t),d.logGroupEnd()}))}return s.onSameUrlNavigation&&(c.onSameUrlNavigation=s.onSameUrlNavigation),s.paramsInheritanceStrategy&&(c.paramsInheritanceStrategy=s.paramsInheritanceStrategy),s.urlUpdateStrategy&&(c.urlUpdateStrategy=s.urlUpdateStrategy),s.relativeLinkResolution&&(c.relativeLinkResolution=s.relativeLinkResolution),c},deps:[k_,rb,_d,zo,qc,bc,eb,wb,[function t(){_(this,t)},new Ct],[Ky,new Ct]]},rb,{provide:z_,useFactory:function(t){return t.routerState.root},deps:[ub]},{provide:qc,useClass:Jc},bb,yb,_b,{provide:wb,useValue:{enableTracing:!1}}];function xb(){return new Rc("Router",ub)}var Cb=function(){var t=function(){function t(e,n){_(this,t)}return b(t,null,[{key:"forRoot",value:function(e,n){return{ngModule:t,providers:[Sb,Eb(e),{provide:Mb,useFactory:Tb,deps:[[ub,new Ct,new Lt]]},{provide:wb,useValue:n||{}},{provide:fd,useFactory:Lb,deps:[rd,[new xt(md),new Ct],wb]},{provide:kb,useFactory:Db,deps:[ub,af,wb]},{provide:vb,useExisting:n&&n.preloadingStrategy?n.preloadingStrategy:yb},{provide:Rc,multi:!0,useFactory:xb},[Pb,{provide:nc,multi:!0,useFactory:Ob,deps:[Pb]},{provide:Ib,useFactory:Ab,deps:[Pb]},{provide:uc,multi:!0,useExisting:Ib}]]}}},{key:"forChild",value:function(e){return{ngModule:t,providers:[Eb(e)]}}}]),t}();return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)(ge(Mb,8),ge(ub,8))}}),t}();function Db(t,e,n){return n.scrollOffset&&e.setOffset(n.scrollOffset),new kb(t,e,n)}function Lb(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.useHash?new vd(t,e):new gd(t,e)}function Tb(t){if(t)throw new Error("RouterModule.forRoot() called twice. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function Eb(t){return[{provide:Wo,multi:!0,useValue:t},{provide:eb,multi:!0,useValue:t}]}var Pb=function(){var t=function(){function t(e){_(this,t),this.injector=e,this.initNavigation=!1,this.resultOfPreactivationDone=new W}return b(t,[{key:"appInitializer",value:function(){var t=this;return this.injector.get(od,Promise.resolve(null)).then((function(){var e=null,n=new Promise((function(t){return e=t})),i=t.injector.get(ub),r=t.injector.get(wb);if(t.isLegacyDisabled(r)||t.isLegacyEnabled(r))e(!0);else if("disabled"===r.initialNavigation)i.setUpLocationChangeListener(),e(!0);else{if("enabled"!==r.initialNavigation)throw new Error("Invalid initialNavigation options: '".concat(r.initialNavigation,"'"));i.hooks.afterPreactivation=function(){return t.initNavigation?pg(null):(t.initNavigation=!0,e(!0),t.resultOfPreactivationDone)},i.initialNavigation()}return n}))}},{key:"bootstrapListener",value:function(t){var e=this.injector.get(wb),n=this.injector.get(bb),i=this.injector.get(kb),r=this.injector.get(ub),a=this.injector.get(Wc);t===a.components[0]&&(this.isLegacyEnabled(e)?r.initialNavigation():this.isLegacyDisabled(e)&&r.setUpLocationChangeListener(),n.setUpPreloading(),i.init(),r.resetRootComponentType(a.componentTypes[0]),this.resultOfPreactivationDone.next(null),this.resultOfPreactivationDone.complete())}},{key:"isLegacyEnabled",value:function(t){return"legacy_enabled"===t.initialNavigation||!0===t.initialNavigation||void 0===t.initialNavigation}},{key:"isLegacyDisabled",value:function(t){return"legacy_disabled"===t.initialNavigation||!1===t.initialNavigation}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(zo))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}();function Ob(t){return t.appInitializer.bind(t)}function Ab(t){return t.bootstrapListener.bind(t)}var Ib=new se("Router Initializer"),Yb=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t,i)).scheduler=t,r.work=i,r.pending=!1,r}return b(n,[{key:"schedule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(this.closed)return this;this.state=t;var n=this.id,i=this.scheduler;return null!=n&&(this.id=this.recycleAsyncId(i,n,e)),this.pending=!0,this.delay=e,this.id=this.id||this.requestAsyncId(i,this.id,e),this}},{key:"requestAsyncId",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return setInterval(t.flush.bind(t,this),n)}},{key:"recycleAsyncId",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(null!==n&&this.delay===n&&!1===this.pending)return e;clearInterval(e)}},{key:"execute",value:function(t,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;var n=this._execute(t,e);if(n)return n;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}},{key:"_execute",value:function(t,e){var n=!1,i=void 0;try{this.work(t)}catch(r){n=!0,i=!!r&&r||new Error(r)}if(n)return this.unsubscribe(),i}},{key:"_unsubscribe",value:function(){var t=this.id,e=this.scheduler,n=e.actions,i=n.indexOf(this);this.work=null,this.state=null,this.pending=!1,this.scheduler=null,-1!==i&&n.splice(i,1),null!=t&&(this.id=this.recycleAsyncId(e,t,null)),this.delay=null}}]),n}(function(t){f(n,t);var e=v(n);function n(t,i){return _(this,n),e.call(this)}return b(n,[{key:"schedule",value:function(t){return this}}]),n}(C)),Fb=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t,i)).scheduler=t,r.work=i,r}return b(n,[{key:"schedule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e>0?r(i(n.prototype),"schedule",this).call(this,t,e):(this.delay=e,this.state=t,this.scheduler.flush(this),this)}},{key:"execute",value:function(t,e){return e>0||this.closed?r(i(n.prototype),"execute",this).call(this,t,e):this._execute(t,e)}},{key:"requestAsyncId",value:function(t,e){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return null!==a&&a>0||null===a&&this.delay>0?r(i(n.prototype),"requestAsyncId",this).call(this,t,e,a):t.flush(this)}}]),n}(Yb),Rb=function(){var t=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.now;_(this,t),this.SchedulerAction=e,this.now=n}return b(t,[{key:"schedule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0;return new this.SchedulerAction(this,t).schedule(n,e)}}]),t}();return t.now=function(){return Date.now()},t}(),Nb=function(t){f(n,t);var e=v(n);function n(t){var i,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Rb.now;return _(this,n),(i=e.call(this,t,(function(){return n.delegate&&n.delegate!==a(i)?n.delegate.now():r()}))).actions=[],i.active=!1,i.scheduled=void 0,i}return b(n,[{key:"schedule",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2?arguments[2]:void 0;return n.delegate&&n.delegate!==this?n.delegate.schedule(t,e,a):r(i(n.prototype),"schedule",this).call(this,t,e,a)}},{key:"flush",value:function(t){var e=this.actions;if(this.active)e.push(t);else{var n;this.active=!0;do{if(n=t.execute(t.state,t.delay))break}while(t=e.shift());if(this.active=!1,n){for(;t=e.shift();)t.unsubscribe();throw n}}}}]),n}(Rb),Hb=new(function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return n}(Nb))(Fb);function jb(t,e){return new H(e?function(n){return e.schedule(Bb,0,{error:t,subscriber:n})}:function(e){return e.error(t)})}function Bb(t){t.subscriber.error(t.error)}var Vb=function(){var t=function(){function t(e,n,i){_(this,t),this.kind=e,this.value=n,this.error=i,this.hasValue="N"===e}return b(t,[{key:"observe",value:function(t){switch(this.kind){case"N":return t.next&&t.next(this.value);case"E":return t.error&&t.error(this.error);case"C":return t.complete&&t.complete()}}},{key:"do",value:function(t,e,n){switch(this.kind){case"N":return t&&t(this.value);case"E":return e&&e(this.error);case"C":return n&&n()}}},{key:"accept",value:function(t,e,n){return t&&"function"==typeof t.next?this.observe(t):this.do(t,e,n)}},{key:"toObservable",value:function(){switch(this.kind){case"N":return pg(this.value);case"E":return jb(this.error);case"C":return av()}throw new Error("unexpected notification kind value")}}],[{key:"createNext",value:function(e){return void 0!==e?new t("N",e):t.undefinedValueNotification}},{key:"createError",value:function(e){return new t("E",void 0,e)}},{key:"createComplete",value:function(){return t.completeNotification}}]),t}();return t.completeNotification=new t("C"),t.undefinedValueNotification=new t("N",void 0),t}(),zb=function(t){f(n,t);var e=v(n);function n(t,i){var r,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return _(this,n),(r=e.call(this,t)).scheduler=i,r.delay=a,r}return b(n,[{key:"scheduleMessage",value:function(t){this.destination.add(this.scheduler.schedule(n.dispatch,this.delay,new Wb(t,this.destination)))}},{key:"_next",value:function(t){this.scheduleMessage(Vb.createNext(t))}},{key:"_error",value:function(t){this.scheduleMessage(Vb.createError(t)),this.unsubscribe()}},{key:"_complete",value:function(){this.scheduleMessage(Vb.createComplete()),this.unsubscribe()}}],[{key:"dispatch",value:function(t){t.notification.observe(t.destination),this.unsubscribe()}}]),n}(A),Wb=function t(e,n){_(this,t),this.notification=e,this.destination=n},Ub=function(t){f(n,t);var e=v(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Number.POSITIVE_INFINITY,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.POSITIVE_INFINITY,a=arguments.length>2?arguments[2]:void 0;return _(this,n),(t=e.call(this)).scheduler=a,t._events=[],t._infiniteTimeWindow=!1,t._bufferSize=i<1?1:i,t._windowTime=r<1?1:r,r===Number.POSITIVE_INFINITY?(t._infiniteTimeWindow=!0,t.next=t.nextInfiniteTimeWindow):t.next=t.nextTimeWindow,t}return b(n,[{key:"nextInfiniteTimeWindow",value:function(t){var e=this._events;e.push(t),e.length>this._bufferSize&&e.shift(),r(i(n.prototype),"next",this).call(this,t)}},{key:"nextTimeWindow",value:function(t){this._events.push(new qb(this._getNow(),t)),this._trimBufferThenGetEvents(),r(i(n.prototype),"next",this).call(this,t)}},{key:"_subscribe",value:function(t){var e,n=this._infiniteTimeWindow,i=n?this._events:this._trimBufferThenGetEvents(),r=this.scheduler,a=i.length;if(this.closed)throw new B;if(this.isStopped||this.hasError?e=C.EMPTY:(this.observers.push(t),e=new V(this,t)),r&&t.add(t=new zb(t,r)),n)for(var o=0;oe&&(a=Math.max(a,r-e)),a>0&&i.splice(0,a),i}}]),n}(W),qb=function t(e,n){_(this,t),this.time=e,this.value=n},Gb=function(t){return t.Node="nd",t.Transport="tp",t.DmsgServer="ds",t}({}),Kb=function(){function t(){var t=this;this.currentRefreshTimeSubject=new Ub(1),this.savedLocalNodes=new Map,this.savedLabels=new Map,this.savedVisibleLocalNodes=new Set,this.storage=localStorage,this.currentRefreshTime=parseInt(this.storage.getItem("refreshSeconds"),10)||10,this.currentRefreshTimeSubject.next(this.currentRefreshTime),this.getSavedLocalNodes().forEach((function(e){t.savedLocalNodes.set(e.publicKey,e),e.hidden||t.savedVisibleLocalNodes.add(e.publicKey)})),this.getSavedLabels().forEach((function(e){return t.savedLabels.set(e.id,e)})),this.loadLegacyNodeData();var e=[];this.savedLocalNodes.forEach((function(t){return e.push(t)}));var n=[];this.savedLabels.forEach((function(t){return n.push(t)})),this.saveLocalNodes(e),this.saveLabels(n)}return t.prototype.loadLegacyNodeData=function(){var t=this,e=JSON.parse(this.storage.getItem("nodesData"))||[];if(e.length>0){var n=this.getSavedLocalNodes(),i=this.getSavedLabels();e.forEach((function(e){n.push({publicKey:e.publicKey,hidden:e.deleted}),t.savedLocalNodes.set(e.publicKey,n[n.length-1]),e.deleted||t.savedVisibleLocalNodes.add(e.publicKey),i.push({id:e.publicKey,identifiedElementType:Gb.Node,label:e.label}),t.savedLabels.set(e.publicKey,i[i.length-1])})),this.saveLocalNodes(n),this.saveLabels(i),this.storage.removeItem("nodesData")}},t.prototype.setRefreshTime=function(t){this.storage.setItem("refreshSeconds",t.toString()),this.currentRefreshTime=t,this.currentRefreshTimeSubject.next(this.currentRefreshTime)},t.prototype.getRefreshTimeObservable=function(){return this.currentRefreshTimeSubject.asObservable()},t.prototype.getRefreshTime=function(){return this.currentRefreshTime},t.prototype.includeVisibleLocalNodes=function(t){this.changeLocalNodesHiddenProperty(t,!1)},t.prototype.setLocalNodesAsHidden=function(t){this.changeLocalNodesHiddenProperty(t,!0)},t.prototype.changeLocalNodesHiddenProperty=function(t,e){var n=this,i=new Set,r=new Set;t.forEach((function(t){i.add(t),r.add(t)}));var a=!1,o=this.getSavedLocalNodes();o.forEach((function(t){i.has(t.publicKey)&&(r.has(t.publicKey)&&r.delete(t.publicKey),t.hidden!==e&&(t.hidden=e,a=!0,n.savedLocalNodes.set(t.publicKey,t),e?n.savedVisibleLocalNodes.delete(t.publicKey):n.savedVisibleLocalNodes.add(t.publicKey)))})),r.forEach((function(t){a=!0;var i={publicKey:t,hidden:e};o.push(i),n.savedLocalNodes.set(t,i),e?n.savedVisibleLocalNodes.delete(t):n.savedVisibleLocalNodes.add(t)})),a&&this.saveLocalNodes(o)},t.prototype.getSavedLocalNodes=function(){return JSON.parse(this.storage.getItem("localNodesData"))||[]},t.prototype.getSavedVisibleLocalNodes=function(){return this.savedVisibleLocalNodes},t.prototype.saveLocalNodes=function(t){this.storage.setItem("localNodesData",JSON.stringify(t))},t.prototype.getSavedLabels=function(){return JSON.parse(this.storage.getItem("labelsData"))||[]},t.prototype.saveLabels=function(t){this.storage.setItem("labelsData",JSON.stringify(t))},t.prototype.saveLabel=function(t,e,n){var i=this;if(e){var r=!1;if(s=this.getSavedLabels().map((function(a){return a.id===t&&a.identifiedElementType===n&&(r=!0,a.label=e,i.savedLabels.set(a.id,{label:a.label,id:a.id,identifiedElementType:a.identifiedElementType})),a})),r)this.saveLabels(s);else{var a={label:e,id:t,identifiedElementType:n};s.push(a),this.savedLabels.set(t,a),this.saveLabels(s)}}else{this.savedLabels.has(t)&&this.savedLabels.delete(t);var o=!1,s=this.getSavedLabels().filter((function(e){return e.id!==t||(o=!0,!1)}));o&&this.saveLabels(s)}},t.prototype.getDefaultLabel=function(t){return t.substr(0,8)},t.prototype.getLabelInfo=function(t){return this.savedLabels.has(t)?this.savedLabels.get(t):null},t.\u0275prov=Ot({token:t,factory:t.\u0275fac=function(e){return new(e||t)},providedIn:"root"}),t}();function Jb(t){return null!=t&&"false"!=="".concat(t)}function Zb(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return $b(t)?Number(t):e}function $b(t){return!isNaN(parseFloat(t))&&!isNaN(Number(t))}function Qb(t){return Array.isArray(t)?t:[t]}function Xb(t){return null==t?"":"string"==typeof t?t:"".concat(t,"px")}function tk(t){return t instanceof Pl?t.nativeElement:t}function ek(t,e,n,i){return S(n)&&(i=n,n=void 0),i?ek(t,e,n).pipe(nt((function(t){return w(t)?i.apply(void 0,u(t)):i(t)}))):new H((function(i){!function t(e,n,i,r,a){var o;if(function(t){return t&&"function"==typeof t.addEventListener&&"function"==typeof t.removeEventListener}(e)){var s=e;e.addEventListener(n,i,a),o=function(){return s.removeEventListener(n,i,a)}}else if(function(t){return t&&"function"==typeof t.on&&"function"==typeof t.off}(e)){var l=e;e.on(n,i),o=function(){return l.off(n,i)}}else if(function(t){return t&&"function"==typeof t.addListener&&"function"==typeof t.removeListener}(e)){var u=e;e.addListener(n,i),o=function(){return u.removeListener(n,i)}}else{if(!e||!e.length)throw new TypeError("Invalid event target");for(var c=0,d=e.length;c1?Array.prototype.slice.call(arguments):t)}),i,n)}))}var nk=1,ik={},rk=function(t){var e=nk++;return ik[e]=t,Promise.resolve().then((function(){return function(t){var e=ik[t];e&&e()}(e)})),e},ak=function(t){delete ik[t]},ok=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t,i)).scheduler=t,r.work=i,r}return b(n,[{key:"requestAsyncId",value:function(t,e){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;return null!==a&&a>0?r(i(n.prototype),"requestAsyncId",this).call(this,t,e,a):(t.actions.push(this),t.scheduled||(t.scheduled=rk(t.flush.bind(t,null))))}},{key:"recycleAsyncId",value:function(t,e){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(null!==a&&a>0||null===a&&this.delay>0)return r(i(n.prototype),"recycleAsyncId",this).call(this,t,e,a);0===t.actions.length&&(ak(e),t.scheduled=void 0)}}]),n}(Yb),sk=new(function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"flush",value:function(t){this.active=!0,this.scheduled=void 0;var e,n=this.actions,i=-1,r=n.length;t=t||n.shift();do{if(e=t.execute(t.state,t.delay))break}while(++i=0}function gk(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0,i=-1;return mk(e)?i=Number(e)<1?1:Number(e):q(e)&&(n=e),q(n)||(n=dk),new H((function(e){var r=mk(t)?t:+t-n.now();return n.schedule(vk,r,{index:0,period:i,subscriber:e})}))}function vk(t){var e=t.index,n=t.period,i=t.subscriber;if(i.next(e),!i.closed){if(-1===n)return i.complete();t.index=e+1,this.schedule(t,n)}}function _k(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:dk;return hk((function(){return gk(t,e)}))}function yk(t){return function(e){return e.lift(new kk(t))}}var bk,kk=function(){function t(e){_(this,t),this.notifier=e}return b(t,[{key:"call",value:function(t,e){var n=new wk(t),i=tt(n,this.notifier);return i&&!n.seenValue?(n.add(i),e.subscribe(n)):n}}]),t}(),wk=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this,t)).seenValue=!1,i}return b(n,[{key:"notifyNext",value:function(t,e,n,i,r){this.seenValue=!0,this.complete()}},{key:"notifyComplete",value:function(){}}]),n}(et);try{bk="undefined"!=typeof Intl&&Intl.v8BreakIterator}catch(nj){bk=!1}var Mk,Sk,xk,Ck,Dk=function(){var t=function t(e){_(this,t),this._platformId=e,this.isBrowser=this._platformId?"browser"===this._platformId:"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!bk)&&"undefined"!=typeof CSS&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT};return t.\u0275fac=function(e){return new(e||t)(ge(lc))},t.\u0275prov=Ot({factory:function(){return new t(ge(lc))},token:t,providedIn:"root"}),t}(),Lk=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}(),Tk=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function Ek(){if(Mk)return Mk;if("object"!=typeof document||!document)return Mk=new Set(Tk);var t=document.createElement("input");return Mk=new Set(Tk.filter((function(e){return t.setAttribute("type",e),t.type===e})))}function Pk(t){return function(){if(null==Sk&&"undefined"!=typeof window)try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:function(){return Sk=!0}}))}finally{Sk=Sk||!1}return Sk}()?t:!!t.capture}function Ok(){if("object"!=typeof document||!document)return 0;if(null==xk){var t=document.createElement("div"),e=t.style;t.dir="rtl",e.width="1px",e.overflow="auto",e.visibility="hidden",e.pointerEvents="none",e.position="absolute";var n=document.createElement("div"),i=n.style;i.width="2px",i.height="1px",t.appendChild(n),document.body.appendChild(t),xk=0,0===t.scrollLeft&&(t.scrollLeft=1,xk=0===t.scrollLeft?1:2),t.parentNode.removeChild(t)}return xk}function Ak(t){if(function(){if(null==Ck){var t="undefined"!=typeof document?document.head:null;Ck=!(!t||!t.createShadowRoot&&!t.attachShadow)}return Ck}()){var e=t.getRootNode?t.getRootNode():null;if("undefined"!=typeof ShadowRoot&&ShadowRoot&&e instanceof ShadowRoot)return e}return null}var Ik=new se("cdk-dir-doc",{providedIn:"root",factory:function(){return ve(id)}}),Yk=function(){var t=function(){function t(e){if(_(this,t),this.value="ltr",this.change=new Ou,e){var n=(e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null);this.value="ltr"===n||"rtl"===n?n:"ltr"}}return b(t,[{key:"ngOnDestroy",value:function(){this.change.complete()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Ik,8))},t.\u0275prov=Ot({factory:function(){return new t(ge(Ik,8))},token:t,providedIn:"root"}),t}(),Fk=function(){var t=function(){function t(){_(this,t),this._dir="ltr",this._isInitialized=!1,this.change=new Ou}return b(t,[{key:"ngAfterContentInit",value:function(){this._isInitialized=!0}},{key:"ngOnDestroy",value:function(){this.change.complete()}},{key:"dir",get:function(){return this._dir},set:function(t){var e=this._dir,n=t?t.toLowerCase():t;this._rawDir=t,this._dir="ltr"===n||"rtl"===n?n:"ltr",e!==this._dir&&this._isInitialized&&this.change.emit(this._dir)}},{key:"value",get:function(){return this.dir}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","dir",""]],hostVars:1,hostBindings:function(t,e){2&t&&ts("dir",e._rawDir)},inputs:{dir:"dir"},outputs:{change:"dirChange"},exportAs:["dir"],features:[Cl([{provide:Yk,useExisting:t}])]}),t}(),Rk=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}(),Nk=function(){function t(){var e=this,n=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=arguments.length>1?arguments[1]:void 0,r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];_(this,t),this._multiple=n,this._emitChanges=r,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new W,i&&i.length&&(n?i.forEach((function(t){return e._markSelected(t)})):this._markSelected(i[0]),this._selectedToEmit.length=0)}return b(t,[{key:"select",value:function(){for(var t=this,e=arguments.length,n=new Array(e),i=0;i1&&!this._multiple)throw Error("Cannot pass multiple values into SelectionModel with single-value mode.")}},{key:"selected",get:function(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}}]),t}(),Hk=function(){var t=function(){function t(e,n,i){_(this,t),this._ngZone=e,this._platform=n,this._scrolled=new W,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=i}return b(t,[{key:"register",value:function(t){var e=this;this.scrollContainers.has(t)||this.scrollContainers.set(t,t.elementScrolled().subscribe((function(){return e._scrolled.next(t)})))}},{key:"deregister",value:function(t){var e=this.scrollContainers.get(t);e&&(e.unsubscribe(),this.scrollContainers.delete(t))}},{key:"scrolled",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20;return this._platform.isBrowser?new H((function(n){t._globalSubscription||t._addGlobalListener();var i=e>0?t._scrolled.pipe(_k(e)).subscribe(n):t._scrolled.subscribe(n);return t._scrolledCount++,function(){i.unsubscribe(),t._scrolledCount--,t._scrolledCount||t._removeGlobalListener()}})):pg()}},{key:"ngOnDestroy",value:function(){var t=this;this._removeGlobalListener(),this.scrollContainers.forEach((function(e,n){return t.deregister(n)})),this._scrolled.complete()}},{key:"ancestorScrolled",value:function(t,e){var n=this.getAncestorScrollContainers(t);return this.scrolled(e).pipe(gg((function(t){return!t||n.indexOf(t)>-1})))}},{key:"getAncestorScrollContainers",value:function(t){var e=this,n=[];return this.scrollContainers.forEach((function(i,r){e._scrollableContainsElement(r,t)&&n.push(r)})),n}},{key:"_getDocument",value:function(){return this._document||document}},{key:"_getWindow",value:function(){return this._getDocument().defaultView||window}},{key:"_scrollableContainsElement",value:function(t,e){var n=e.nativeElement,i=t.getElementRef().nativeElement;do{if(n==i)return!0}while(n=n.parentElement);return!1}},{key:"_addGlobalListener",value:function(){var t=this;this._globalSubscription=this._ngZone.runOutsideAngular((function(){return ek(t._getWindow().document,"scroll").subscribe((function(){return t._scrolled.next()}))}))}},{key:"_removeGlobalListener",value:function(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Mc),ge(Dk),ge(id,8))},t.\u0275prov=Ot({factory:function(){return new t(ge(Mc),ge(Dk),ge(id,8))},token:t,providedIn:"root"}),t}(),jk=function(){var t=function(){function t(e,n,i,r){var a=this;_(this,t),this.elementRef=e,this.scrollDispatcher=n,this.ngZone=i,this.dir=r,this._destroyed=new W,this._elementScrolled=new H((function(t){return a.ngZone.runOutsideAngular((function(){return ek(a.elementRef.nativeElement,"scroll").pipe(yk(a._destroyed)).subscribe(t)}))}))}return b(t,[{key:"ngOnInit",value:function(){this.scrollDispatcher.register(this)}},{key:"ngOnDestroy",value:function(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}},{key:"elementScrolled",value:function(){return this._elementScrolled}},{key:"getElementRef",value:function(){return this.elementRef}},{key:"scrollTo",value:function(t){var e=this.elementRef.nativeElement,n=this.dir&&"rtl"==this.dir.value;null==t.left&&(t.left=n?t.end:t.start),null==t.right&&(t.right=n?t.start:t.end),null!=t.bottom&&(t.top=e.scrollHeight-e.clientHeight-t.bottom),n&&0!=Ok()?(null!=t.left&&(t.right=e.scrollWidth-e.clientWidth-t.left),2==Ok()?t.left=t.right:1==Ok()&&(t.left=t.right?-t.right:t.right)):null!=t.right&&(t.left=e.scrollWidth-e.clientWidth-t.right),this._applyScrollToOptions(t)}},{key:"_applyScrollToOptions",value:function(t){var e=this.elementRef.nativeElement;"object"==typeof document&&"scrollBehavior"in document.documentElement.style?e.scrollTo(t):(null!=t.top&&(e.scrollTop=t.top),null!=t.left&&(e.scrollLeft=t.left))}},{key:"measureScrollOffset",value:function(t){var e=this.elementRef.nativeElement;if("top"==t)return e.scrollTop;if("bottom"==t)return e.scrollHeight-e.clientHeight-e.scrollTop;var n=this.dir&&"rtl"==this.dir.value;return"start"==t?t=n?"right":"left":"end"==t&&(t=n?"left":"right"),n&&2==Ok()?"left"==t?e.scrollWidth-e.clientWidth-e.scrollLeft:e.scrollLeft:n&&1==Ok()?"left"==t?e.scrollLeft+e.scrollWidth-e.clientWidth:-e.scrollLeft:"left"==t?e.scrollLeft:e.scrollWidth-e.clientWidth-e.scrollLeft}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Hk),rs(Mc),rs(Yk,8))},t.\u0275dir=Ve({type:t,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]]}),t}(),Bk=function(){var t=function(){function t(e,n,i){var r=this;_(this,t),this._platform=e,this._change=new W,this._changeListener=function(t){r._change.next(t)},this._document=i,n.runOutsideAngular((function(){if(e.isBrowser){var t=r._getWindow();t.addEventListener("resize",r._changeListener),t.addEventListener("orientationchange",r._changeListener)}r.change().subscribe((function(){return r._updateViewportSize()}))}))}return b(t,[{key:"ngOnDestroy",value:function(){if(this._platform.isBrowser){var t=this._getWindow();t.removeEventListener("resize",this._changeListener),t.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}},{key:"getViewportSize",value:function(){this._viewportSize||this._updateViewportSize();var t={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),t}},{key:"getViewportRect",value:function(){var t=this.getViewportScrollPosition(),e=this.getViewportSize(),n=e.width,i=e.height;return{top:t.top,left:t.left,bottom:t.top+i,right:t.left+n,height:i,width:n}}},{key:"getViewportScrollPosition",value:function(){if(!this._platform.isBrowser)return{top:0,left:0};var t=this._getDocument(),e=this._getWindow(),n=t.documentElement,i=n.getBoundingClientRect();return{top:-i.top||t.body.scrollTop||e.scrollY||n.scrollTop||0,left:-i.left||t.body.scrollLeft||e.scrollX||n.scrollLeft||0}}},{key:"change",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:20;return t>0?this._change.pipe(_k(t)):this._change}},{key:"_getDocument",value:function(){return this._document||document}},{key:"_getWindow",value:function(){return this._getDocument().defaultView||window}},{key:"_updateViewportSize",value:function(){var t=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:t.innerWidth,height:t.innerHeight}:{width:0,height:0}}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Dk),ge(Mc),ge(id,8))},t.\u0275prov=Ot({factory:function(){return new t(ge(Dk),ge(Mc),ge(id,8))},token:t,providedIn:"root"}),t}(),Vk=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}(),zk=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[Rk,Lk,Vk],Rk,Vk]}),t}();function Wk(){throw Error("Host already has a portal attached")}var Uk=function(){function t(){_(this,t)}return b(t,[{key:"attach",value:function(t){return null==t&&function(){throw Error("Attempting to attach a portal to a null PortalOutlet")}(),t.hasAttached()&&Wk(),this._attachedHost=t,t.attach(this)}},{key:"detach",value:function(){var t=this._attachedHost;null==t?function(){throw Error("Attempting to detach a portal that is not attached to a host")}():(this._attachedHost=null,t.detach())}},{key:"setAttachedHost",value:function(t){this._attachedHost=t}},{key:"isAttached",get:function(){return null!=this._attachedHost}}]),t}(),qk=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this)).component=t,o.viewContainerRef=i,o.injector=r,o.componentFactoryResolver=a,o}return n}(Uk),Gk=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this)).templateRef=t,a.viewContainerRef=i,a.context=r,a}return b(n,[{key:"attach",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.context;return this.context=e,r(i(n.prototype),"attach",this).call(this,t)}},{key:"detach",value:function(){return this.context=void 0,r(i(n.prototype),"detach",this).call(this)}},{key:"origin",get:function(){return this.templateRef.elementRef}}]),n}(Uk),Kk=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this)).element=t instanceof Pl?t.nativeElement:t,i}return n}(Uk),Jk=function(){function t(){_(this,t),this._isDisposed=!1,this.attachDomPortal=null}return b(t,[{key:"hasAttached",value:function(){return!!this._attachedPortal}},{key:"attach",value:function(t){return t||function(){throw Error("Must provide a portal to attach")}(),this.hasAttached()&&Wk(),this._isDisposed&&function(){throw Error("This PortalOutlet has already been disposed")}(),t instanceof qk?(this._attachedPortal=t,this.attachComponentPortal(t)):t instanceof Gk?(this._attachedPortal=t,this.attachTemplatePortal(t)):this.attachDomPortal&&t instanceof Kk?(this._attachedPortal=t,this.attachDomPortal(t)):void function(){throw Error("Attempting to attach an unknown Portal type. BasePortalOutlet accepts either a ComponentPortal or a TemplatePortal.")}()}},{key:"detach",value:function(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}},{key:"dispose",value:function(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}},{key:"setDisposeFn",value:function(t){this._disposeFn=t}},{key:"_invokeDisposeFn",value:function(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}]),t}(),Zk=function(t){f(n,t);var e=v(n);function n(t,o,s,l,u){var c,d;return _(this,n),(d=e.call(this)).outletElement=t,d._componentFactoryResolver=o,d._appRef=s,d._defaultInjector=l,d.attachDomPortal=function(t){if(!d._document)throw Error("Cannot attach DOM portal without _document constructor parameter");var e=t.element;if(!e.parentNode)throw Error("DOM portal content must be attached to a parent node.");var o=d._document.createComment("dom-portal");e.parentNode.insertBefore(o,e),d.outletElement.appendChild(e),r((c=a(d),i(n.prototype)),"setDisposeFn",c).call(c,(function(){o.parentNode&&o.parentNode.replaceChild(e,o)}))},d._document=u,d}return b(n,[{key:"attachComponentPortal",value:function(t){var e,n=this,i=(t.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(t.component);return t.viewContainerRef?(e=t.viewContainerRef.createComponent(i,t.viewContainerRef.length,t.injector||t.viewContainerRef.injector),this.setDisposeFn((function(){return e.destroy()}))):(e=i.create(t.injector||this._defaultInjector),this._appRef.attachView(e.hostView),this.setDisposeFn((function(){n._appRef.detachView(e.hostView),e.destroy()}))),this.outletElement.appendChild(this._getComponentRootNode(e)),e}},{key:"attachTemplatePortal",value:function(t){var e=this,n=t.viewContainerRef,i=n.createEmbeddedView(t.templateRef,t.context);return i.detectChanges(),i.rootNodes.forEach((function(t){return e.outletElement.appendChild(t)})),this.setDisposeFn((function(){var t=n.indexOf(i);-1!==t&&n.remove(t)})),i}},{key:"dispose",value:function(){r(i(n.prototype),"dispose",this).call(this),null!=this.outletElement.parentNode&&this.outletElement.parentNode.removeChild(this.outletElement)}},{key:"_getComponentRootNode",value:function(t){return t.hostView.rootNodes[0]}}]),n}(Jk),$k=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){return _(this,n),e.call(this,t,i)}return n}(Gk);return t.\u0275fac=function(e){return new(e||t)(rs(eu),rs(iu))},t.\u0275dir=Ve({type:t,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[fl]}),t}(),Qk=function(){var t=function(t){f(n,t);var e=v(n);function n(t,o,s){var l,u;return _(this,n),(u=e.call(this))._componentFactoryResolver=t,u._viewContainerRef=o,u._isInitialized=!1,u.attached=new Ou,u.attachDomPortal=function(t){if(!u._document)throw Error("Cannot attach DOM portal without _document constructor parameter");var e=t.element;if(!e.parentNode)throw Error("DOM portal content must be attached to a parent node.");var o=u._document.createComment("dom-portal");t.setAttachedHost(a(u)),e.parentNode.insertBefore(o,e),u._getRootNode().appendChild(e),r((l=a(u),i(n.prototype)),"setDisposeFn",l).call(l,(function(){o.parentNode&&o.parentNode.replaceChild(e,o)}))},u._document=s,u}return b(n,[{key:"ngOnInit",value:function(){this._isInitialized=!0}},{key:"ngOnDestroy",value:function(){r(i(n.prototype),"dispose",this).call(this),this._attachedPortal=null,this._attachedRef=null}},{key:"attachComponentPortal",value:function(t){t.setAttachedHost(this);var e=null!=t.viewContainerRef?t.viewContainerRef:this._viewContainerRef,a=(t.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(t.component),o=e.createComponent(a,e.length,t.injector||e.injector);return e!==this._viewContainerRef&&this._getRootNode().appendChild(o.hostView.rootNodes[0]),r(i(n.prototype),"setDisposeFn",this).call(this,(function(){return o.destroy()})),this._attachedPortal=t,this._attachedRef=o,this.attached.emit(o),o}},{key:"attachTemplatePortal",value:function(t){var e=this;t.setAttachedHost(this);var a=this._viewContainerRef.createEmbeddedView(t.templateRef,t.context);return r(i(n.prototype),"setDisposeFn",this).call(this,(function(){return e._viewContainerRef.clear()})),this._attachedPortal=t,this._attachedRef=a,this.attached.emit(a),a}},{key:"_getRootNode",value:function(){var t=this._viewContainerRef.element.nativeElement;return t.nodeType===t.ELEMENT_NODE?t:t.parentNode}},{key:"portal",get:function(){return this._attachedPortal},set:function(t){(!this.hasAttached()||t||this._isInitialized)&&(this.hasAttached()&&r(i(n.prototype),"detach",this).call(this),t&&r(i(n.prototype),"attach",this).call(this,t),this._attachedPortal=t)}},{key:"attachedRef",get:function(){return this._attachedRef}}]),n}(Jk);return t.\u0275fac=function(e){return new(e||t)(rs(El),rs(iu),rs(id))},t.\u0275dir=Ve({type:t,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[fl]}),t}(),Xk=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return n}(Qk);return t.\u0275fac=function(e){return tw(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","cdkPortalHost",""],["","portalHost",""]],inputs:{portal:["cdkPortalHost","portal"]},exportAs:["cdkPortalHost"],features:[Cl([{provide:Qk,useExisting:t}]),fl]}),t}(),tw=Bi(Xk),ew=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}(),nw=function(){function t(e,n){_(this,t),this._parentInjector=e,this._customTokens=n}return b(t,[{key:"get",value:function(t,e){var n=this._customTokens.get(t);return void 0!==n?n:this._parentInjector.get(t,e)}}]),t}();function iw(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;ie.height||t.scrollWidth>e.width}}]),t}();function aw(){return Error("Scroll strategy has already been attached.")}var ow=function(){function t(e,n,i,r){var a=this;_(this,t),this._scrollDispatcher=e,this._ngZone=n,this._viewportRuler=i,this._config=r,this._scrollSubscription=null,this._detach=function(){a.disable(),a._overlayRef.hasAttached()&&a._ngZone.run((function(){return a._overlayRef.detach()}))}}return b(t,[{key:"attach",value:function(t){if(this._overlayRef)throw aw();this._overlayRef=t}},{key:"enable",value:function(){var t=this;if(!this._scrollSubscription){var e=this._scrollDispatcher.scrolled(0);this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=e.subscribe((function(){var e=t._viewportRuler.getViewportScrollPosition().top;Math.abs(e-t._initialScrollPosition)>t._config.threshold?t._detach():t._overlayRef.updatePosition()}))):this._scrollSubscription=e.subscribe(this._detach)}}},{key:"disable",value:function(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}},{key:"detach",value:function(){this.disable(),this._overlayRef=null}}]),t}(),sw=function(){function t(){_(this,t)}return b(t,[{key:"enable",value:function(){}},{key:"disable",value:function(){}},{key:"attach",value:function(){}}]),t}();function lw(t,e){return e.some((function(e){return t.bottome.bottom||t.righte.right}))}function uw(t,e){return e.some((function(e){return t.tope.bottom||t.lefte.right}))}var cw=function(){function t(e,n,i,r){_(this,t),this._scrollDispatcher=e,this._viewportRuler=n,this._ngZone=i,this._config=r,this._scrollSubscription=null}return b(t,[{key:"attach",value:function(t){if(this._overlayRef)throw aw();this._overlayRef=t}},{key:"enable",value:function(){var t=this;this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe((function(){if(t._overlayRef.updatePosition(),t._config&&t._config.autoClose){var e=t._overlayRef.overlayElement.getBoundingClientRect(),n=t._viewportRuler.getViewportSize(),i=n.width,r=n.height;lw(e,[{width:i,height:r,bottom:r,right:i,top:0,left:0}])&&(t.disable(),t._ngZone.run((function(){return t._overlayRef.detach()})))}})))}},{key:"disable",value:function(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}},{key:"detach",value:function(){this.disable(),this._overlayRef=null}}]),t}(),dw=function(){var t=function t(e,n,i,r){var a=this;_(this,t),this._scrollDispatcher=e,this._viewportRuler=n,this._ngZone=i,this.noop=function(){return new sw},this.close=function(t){return new ow(a._scrollDispatcher,a._ngZone,a._viewportRuler,t)},this.block=function(){return new rw(a._viewportRuler,a._document)},this.reposition=function(t){return new cw(a._scrollDispatcher,a._viewportRuler,a._ngZone,t)},this._document=r};return t.\u0275fac=function(e){return new(e||t)(ge(Hk),ge(Bk),ge(Mc),ge(id))},t.\u0275prov=Ot({factory:function(){return new t(ge(Hk),ge(Bk),ge(Mc),ge(id))},token:t,providedIn:"root"}),t}(),hw=function t(e){if(_(this,t),this.scrollStrategy=new sw,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,this.excludeFromOutsideClick=[],e)for(var n=0,i=Object.keys(e);n-1&&this._attachedOverlays.splice(e,1),0===this._attachedOverlays.length&&this.detach()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(id))},t.\u0275prov=Ot({factory:function(){return new t(ge(id))},token:t,providedIn:"root"}),t}(),_w=function(){var t=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this,t))._keydownListener=function(t){for(var e=i._attachedOverlays,n=e.length-1;n>-1;n--)if(e[n]._keydownEvents.observers.length>0){e[n]._keydownEvents.next(t);break}},i}return b(n,[{key:"add",value:function(t){r(i(n.prototype),"add",this).call(this,t),this._isAttached||(this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}},{key:"detach",value:function(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}]),n}(vw);return t.\u0275fac=function(e){return new(e||t)(ge(id))},t.\u0275prov=Ot({factory:function(){return new t(ge(id))},token:t,providedIn:"root"}),t}(),yw=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this,t))._platform=i,r._cursorStyleIsSet=!1,r._clickListener=function(t){for(var e=t.composedPath?t.composedPath()[0]:t.target,n=r._attachedOverlays,i=n.length-1;i>-1;i--){var a=n[i];if(!(a._outsidePointerEvents.observers.length<1)){var o=a.getConfig();if([].concat(u(o.excludeFromOutsideClick),[a.overlayElement]).some((function(t){return t.contains(e)})))break;a._outsidePointerEvents.next(t)}}},r}return b(n,[{key:"add",value:function(t){r(i(n.prototype),"add",this).call(this,t),this._isAttached||(this._document.body.addEventListener("click",this._clickListener,!0),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=this._document.body.style.cursor,this._document.body.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0)}},{key:"detach",value:function(){this._isAttached&&(this._document.body.removeEventListener("click",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(this._document.body.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1)}}]),n}(vw);return t.\u0275fac=function(e){return new(e||t)(ge(id),ge(Dk))},t.\u0275prov=Ot({factory:function(){return new t(ge(id),ge(Dk))},token:t,providedIn:"root"}),t}(),bw=!("undefined"==typeof window||!window||!window.__karma__&&!window.jasmine),kw=function(){var t=function(){function t(e,n){_(this,t),this._platform=n,this._document=e}return b(t,[{key:"ngOnDestroy",value:function(){var t=this._containerElement;t&&t.parentNode&&t.parentNode.removeChild(t)}},{key:"getContainerElement",value:function(){return this._containerElement||this._createContainer(),this._containerElement}},{key:"_createContainer",value:function(){var t=this._platform?this._platform.isBrowser:"undefined"!=typeof window;if(t||bw)for(var e=this._document.querySelectorAll(".".concat("cdk-overlay-container",'[platform="server"], ')+".".concat("cdk-overlay-container",'[platform="test"]')),n=0;np&&(p=v,f=g)}}catch(_){m.e(_)}finally{m.f()}return this._isPushed=!1,void this._applyPosition(f.position,f.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(t.position,t.originPoint);this._applyPosition(t.position,t.originPoint)}}},{key:"detach",value:function(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}},{key:"dispose",value:function(){this._isDisposed||(this._boundingBox&&xw(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove("cdk-overlay-connected-position-bounding-box"),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}},{key:"reapplyLastPosition",value:function(){if(!this._isDisposed&&(!this._platform||this._platform.isBrowser)){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect();var t=this._lastPosition||this._preferredPositions[0],e=this._getOriginPoint(this._originRect,t);this._applyPosition(t,e)}}},{key:"withScrollableContainers",value:function(t){return this._scrollables=t,this}},{key:"withPositions",value:function(t){return this._preferredPositions=t,-1===t.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}},{key:"withViewportMargin",value:function(t){return this._viewportMargin=t,this}},{key:"withFlexibleDimensions",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._hasFlexibleDimensions=t,this}},{key:"withGrowAfterOpen",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._growAfterOpen=t,this}},{key:"withPush",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._canPush=t,this}},{key:"withLockedPosition",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._positionLocked=t,this}},{key:"setOrigin",value:function(t){return this._origin=t,this}},{key:"withDefaultOffsetX",value:function(t){return this._offsetX=t,this}},{key:"withDefaultOffsetY",value:function(t){return this._offsetY=t,this}},{key:"withTransformOriginOn",value:function(t){return this._transformOriginSelector=t,this}},{key:"_getOriginPoint",value:function(t,e){var n;if("center"==e.originX)n=t.left+t.width/2;else{var i=this._isRtl()?t.right:t.left,r=this._isRtl()?t.left:t.right;n="start"==e.originX?i:r}return{x:n,y:"center"==e.originY?t.top+t.height/2:"top"==e.originY?t.top:t.bottom}}},{key:"_getOverlayPoint",value:function(t,e,n){var i;return i="center"==n.overlayX?-e.width/2:"start"===n.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,{x:t.x+i,y:t.y+("center"==n.overlayY?-e.height/2:"top"==n.overlayY?0:-e.height)}}},{key:"_getOverlayFit",value:function(t,e,n,i){var r=t.x,a=t.y,o=this._getOffset(i,"x"),s=this._getOffset(i,"y");o&&(r+=o),s&&(a+=s);var l=0-a,u=a+e.height-n.height,c=this._subtractOverflows(e.width,0-r,r+e.width-n.width),d=this._subtractOverflows(e.height,l,u),h=c*d;return{visibleArea:h,isCompletelyWithinViewport:e.width*e.height===h,fitsInViewportVertically:d===e.height,fitsInViewportHorizontally:c==e.width}}},{key:"_canFitWithFlexibleDimensions",value:function(t,e,n){if(this._hasFlexibleDimensions){var i=n.bottom-e.y,r=n.right-e.x,a=Cw(this._overlayRef.getConfig().minHeight),o=Cw(this._overlayRef.getConfig().minWidth);return(t.fitsInViewportVertically||null!=a&&a<=i)&&(t.fitsInViewportHorizontally||null!=o&&o<=r)}return!1}},{key:"_pushOverlayOnScreen",value:function(t,e,n){if(this._previousPushAmount&&this._positionLocked)return{x:t.x+this._previousPushAmount.x,y:t.y+this._previousPushAmount.y};var i,r,a=this._viewportRect,o=Math.max(t.x+e.width-a.right,0),s=Math.max(t.y+e.height-a.bottom,0),l=Math.max(a.top-n.top-t.y,0),u=Math.max(a.left-n.left-t.x,0);return this._previousPushAmount={x:i=e.width<=a.width?u||-o:t.xd&&!this._isInitialRender&&!this._growAfterOpen&&(i=t.y-d/2)}if("end"===e.overlayX&&!u||"start"===e.overlayX&&u)s=l.width-t.x+this._viewportMargin,a=t.x-this._viewportMargin;else if("start"===e.overlayX&&!u||"end"===e.overlayX&&u)o=t.x,a=l.right-t.x;else{var h=Math.min(l.right-t.x+l.left,t.x),f=this._lastBoundingBoxSize.width;o=t.x-h,(a=2*h)>f&&!this._isInitialRender&&!this._growAfterOpen&&(o=t.x-f/2)}return{top:i,left:o,bottom:r,right:s,width:a,height:n}}},{key:"_setBoundingBoxStyles",value:function(t,e){var n=this._calculateBoundingBoxRect(t,e);this._isInitialRender||this._growAfterOpen||(n.height=Math.min(n.height,this._lastBoundingBoxSize.height),n.width=Math.min(n.width,this._lastBoundingBoxSize.width));var i={};if(this._hasExactPosition())i.top=i.left="0",i.bottom=i.right=i.maxHeight=i.maxWidth="",i.width=i.height="100%";else{var r=this._overlayRef.getConfig().maxHeight,a=this._overlayRef.getConfig().maxWidth;i.height=Xb(n.height),i.top=Xb(n.top),i.bottom=Xb(n.bottom),i.width=Xb(n.width),i.left=Xb(n.left),i.right=Xb(n.right),i.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",i.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",r&&(i.maxHeight=Xb(r)),a&&(i.maxWidth=Xb(a))}this._lastBoundingBoxSize=n,xw(this._boundingBox.style,i)}},{key:"_resetBoundingBoxStyles",value:function(){xw(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}},{key:"_resetOverlayElementStyles",value:function(){xw(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}},{key:"_setOverlayElementStyles",value:function(t,e){var n={},i=this._hasExactPosition(),r=this._hasFlexibleDimensions,a=this._overlayRef.getConfig();if(i){var o=this._viewportRuler.getViewportScrollPosition();xw(n,this._getExactOverlayY(e,t,o)),xw(n,this._getExactOverlayX(e,t,o))}else n.position="static";var s="",l=this._getOffset(e,"x"),u=this._getOffset(e,"y");l&&(s+="translateX(".concat(l,"px) ")),u&&(s+="translateY(".concat(u,"px)")),n.transform=s.trim(),a.maxHeight&&(i?n.maxHeight=Xb(a.maxHeight):r&&(n.maxHeight="")),a.maxWidth&&(i?n.maxWidth=Xb(a.maxWidth):r&&(n.maxWidth="")),xw(this._pane.style,n)}},{key:"_getExactOverlayY",value:function(t,e,n){var i={top:"",bottom:""},r=this._getOverlayPoint(e,this._overlayRect,t);this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,n));var a=this._overlayContainer.getContainerElement().getBoundingClientRect().top;return r.y-=a,"bottom"===t.overlayY?i.bottom="".concat(this._document.documentElement.clientHeight-(r.y+this._overlayRect.height),"px"):i.top=Xb(r.y),i}},{key:"_getExactOverlayX",value:function(t,e,n){var i={left:"",right:""},r=this._getOverlayPoint(e,this._overlayRect,t);return this._isPushed&&(r=this._pushOverlayOnScreen(r,this._overlayRect,n)),"right"==(this._isRtl()?"end"===t.overlayX?"left":"right":"end"===t.overlayX?"right":"left")?i.right="".concat(this._document.documentElement.clientWidth-(r.x+this._overlayRect.width),"px"):i.left=Xb(r.x),i}},{key:"_getScrollVisibility",value:function(){var t=this._getOriginRect(),e=this._pane.getBoundingClientRect(),n=this._scrollables.map((function(t){return t.getElementRef().nativeElement.getBoundingClientRect()}));return{isOriginClipped:uw(t,n),isOriginOutsideView:lw(t,n),isOverlayClipped:uw(e,n),isOverlayOutsideView:lw(e,n)}}},{key:"_subtractOverflows",value:function(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:"";return this._bottomOffset="",this._topOffset=t,this._alignItems="flex-start",this}},{key:"left",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this._rightOffset="",this._leftOffset=t,this._justifyContent="flex-start",this}},{key:"bottom",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this._topOffset="",this._bottomOffset=t,this._alignItems="flex-end",this}},{key:"right",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this._leftOffset="",this._rightOffset=t,this._justifyContent="flex-end",this}},{key:"width",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this._overlayRef?this._overlayRef.updateSize({width:t}):this._width=t,this}},{key:"height",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this._overlayRef?this._overlayRef.updateSize({height:t}):this._height=t,this}},{key:"centerHorizontally",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.left(t),this._justifyContent="center",this}},{key:"centerVertically",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return this.top(t),this._alignItems="center",this}},{key:"apply",value:function(){if(this._overlayRef&&this._overlayRef.hasAttached()){var t=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,n=this._overlayRef.getConfig(),i=n.width,r=n.height,a=n.maxWidth,o=n.maxHeight,s=!("100%"!==i&&"100vw"!==i||a&&"100%"!==a&&"100vw"!==a),l=!("100%"!==r&&"100vh"!==r||o&&"100%"!==o&&"100vh"!==o);t.position=this._cssPosition,t.marginLeft=s?"0":this._leftOffset,t.marginTop=l?"0":this._topOffset,t.marginBottom=this._bottomOffset,t.marginRight=this._rightOffset,s?e.justifyContent="flex-start":"center"===this._justifyContent?e.justifyContent="center":"rtl"===this._overlayRef.getConfig().direction?"flex-start"===this._justifyContent?e.justifyContent="flex-end":"flex-end"===this._justifyContent&&(e.justifyContent="flex-start"):e.justifyContent=this._justifyContent,e.alignItems=l?"flex-start":this._alignItems}}},{key:"dispose",value:function(){if(!this._isDisposed&&this._overlayRef){var t=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,n=e.style;e.classList.remove("cdk-global-overlay-wrapper"),n.justifyContent=n.alignItems=t.marginTop=t.marginBottom=t.marginLeft=t.marginRight=t.position="",this._overlayRef=null,this._isDisposed=!0}}}]),t}(),Tw=function(){var t=function(){function t(e,n,i,r){_(this,t),this._viewportRuler=e,this._document=n,this._platform=i,this._overlayContainer=r}return b(t,[{key:"global",value:function(){return new Lw}},{key:"connectedTo",value:function(t,e,n){return new Dw(e,n,t,this._viewportRuler,this._document,this._platform,this._overlayContainer)}},{key:"flexibleConnectedTo",value:function(t){return new Sw(t,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Bk),ge(id),ge(Dk),ge(kw))},t.\u0275prov=Ot({factory:function(){return new t(ge(Bk),ge(id),ge(Dk),ge(kw))},token:t,providedIn:"root"}),t}(),Ew=0,Pw=function(){var t=function(){function t(e,n,i,r,a,o,s,l,u,c,d){_(this,t),this.scrollStrategies=e,this._overlayContainer=n,this._componentFactoryResolver=i,this._positionBuilder=r,this._keyboardDispatcher=a,this._injector=o,this._ngZone=s,this._document=l,this._directionality=u,this._location=c,this._outsideClickDispatcher=d}return b(t,[{key:"create",value:function(t){var e=this._createHostElement(),n=this._createPaneElement(e),i=this._createPortalOutlet(n),r=new hw(t);return r.direction=r.direction||this._directionality.value,new ww(i,e,n,r,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher)}},{key:"position",value:function(){return this._positionBuilder}},{key:"_createPaneElement",value:function(t){var e=this._document.createElement("div");return e.id="cdk-overlay-".concat(Ew++),e.classList.add("cdk-overlay-pane"),t.appendChild(e),e}},{key:"_createHostElement",value:function(){var t=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(t),t}},{key:"_createPortalOutlet",value:function(t){return this._appRef||(this._appRef=this._injector.get(Wc)),new Zk(t,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(dw),ge(kw),ge(El),ge(Tw),ge(_w),ge(zo),ge(Mc),ge(id),ge(Yk),ge(_d,8),ge(yw,8))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Ow=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Aw=new se("cdk-connected-overlay-scroll-strategy"),Iw=function(){var t=function t(e){_(this,t),this.elementRef=e};return t.\u0275fac=function(e){return new(e||t)(rs(Pl))},t.\u0275dir=Ve({type:t,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"]}),t}(),Yw=function(){var t=function(){function t(e,n,i,r,a){_(this,t),this._overlay=e,this._dir=a,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=C.EMPTY,this._attachSubscription=C.EMPTY,this._detachSubscription=C.EMPTY,this.viewportMargin=0,this.open=!1,this.backdropClick=new Ou,this.positionChange=new Ou,this.attach=new Ou,this.detach=new Ou,this.overlayKeydown=new Ou,this.overlayOutsideClick=new Ou,this._templatePortal=new Gk(n,i),this._scrollStrategyFactory=r,this.scrollStrategy=this._scrollStrategyFactory()}return b(t,[{key:"ngOnDestroy",value:function(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}},{key:"ngOnChanges",value:function(t){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),t.origin&&this.open&&this._position.apply()),t.open&&(this.open?this._attachOverlay():this._detachOverlay())}},{key:"_createOverlay",value:function(){var t=this;this.positions&&this.positions.length||(this.positions=Ow);var e=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=e.attachments().subscribe((function(){return t.attach.emit()})),this._detachSubscription=e.detachments().subscribe((function(){return t.detach.emit()})),e.keydownEvents().subscribe((function(e){t.overlayKeydown.next(e),27!==e.keyCode||iw(e)||(e.preventDefault(),t._detachOverlay())})),this._overlayRef.outsidePointerEvents().subscribe((function(e){t.overlayOutsideClick.next(e)}))}},{key:"_buildConfig",value:function(){var t=this._position=this.positionStrategy||this._createPositionStrategy(),e=new hw({direction:this._dir,positionStrategy:t,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(e.width=this.width),(this.height||0===this.height)&&(e.height=this.height),(this.minWidth||0===this.minWidth)&&(e.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(e.minHeight=this.minHeight),this.backdropClass&&(e.backdropClass=this.backdropClass),this.panelClass&&(e.panelClass=this.panelClass),e}},{key:"_updatePositionStrategy",value:function(t){var e=this,n=this.positions.map((function(t){return{originX:t.originX,originY:t.originY,overlayX:t.overlayX,overlayY:t.overlayY,offsetX:t.offsetX||e.offsetX,offsetY:t.offsetY||e.offsetY,panelClass:t.panelClass||void 0}}));return t.setOrigin(this.origin.elementRef).withPositions(n).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}},{key:"_createPositionStrategy",value:function(){var t=this,e=this._overlay.position().flexibleConnectedTo(this.origin.elementRef);return this._updatePositionStrategy(e),e.positionChanges.subscribe((function(e){return t.positionChange.emit(e)})),e}},{key:"_attachOverlay",value:function(){var t=this;this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe((function(e){t.backdropClick.emit(e)})):this._backdropSubscription.unsubscribe()}},{key:"_detachOverlay",value:function(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe()}},{key:"offsetX",get:function(){return this._offsetX},set:function(t){this._offsetX=t,this._position&&this._updatePositionStrategy(this._position)}},{key:"offsetY",get:function(){return this._offsetY},set:function(t){this._offsetY=t,this._position&&this._updatePositionStrategy(this._position)}},{key:"hasBackdrop",get:function(){return this._hasBackdrop},set:function(t){this._hasBackdrop=Jb(t)}},{key:"lockPosition",get:function(){return this._lockPosition},set:function(t){this._lockPosition=Jb(t)}},{key:"flexibleDimensions",get:function(){return this._flexibleDimensions},set:function(t){this._flexibleDimensions=Jb(t)}},{key:"growAfterOpen",get:function(){return this._growAfterOpen},set:function(t){this._growAfterOpen=Jb(t)}},{key:"push",get:function(){return this._push},set:function(t){this._push=Jb(t)}},{key:"overlayRef",get:function(){return this._overlayRef}},{key:"dir",get:function(){return this._dir?this._dir.value:"ltr"}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pw),rs(eu),rs(iu),rs(Aw),rs(Yk,8))},t.\u0275dir=Ve({type:t,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],open:["cdkConnectedOverlayOpen","open"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"],positions:["cdkConnectedOverlayPositions","positions"],origin:["cdkConnectedOverlayOrigin","origin"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],features:[en]}),t}(),Fw={provide:Aw,deps:[Pw],useFactory:function(t){return function(){return t.scrollStrategies.reposition()}}},Rw=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[Pw,Fw],imports:[[Rk,ew,zk],zk]}),t}();function Nw(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:dk;return function(n){return n.lift(new Hw(t,e))}}var Hw=function(){function t(e,n){_(this,t),this.dueTime=e,this.scheduler=n}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new jw(t,this.dueTime,this.scheduler))}}]),t}(),jw=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,t)).dueTime=i,a.scheduler=r,a.debouncedSubscription=null,a.lastValue=null,a.hasValue=!1,a}return b(n,[{key:"_next",value:function(t){this.clearDebounce(),this.lastValue=t,this.hasValue=!0,this.add(this.debouncedSubscription=this.scheduler.schedule(Bw,this.dueTime,this))}},{key:"_complete",value:function(){this.debouncedNext(),this.destination.complete()}},{key:"debouncedNext",value:function(){if(this.clearDebounce(),this.hasValue){var t=this.lastValue;this.lastValue=null,this.hasValue=!1,this.destination.next(t)}}},{key:"clearDebounce",value:function(){var t=this.debouncedSubscription;null!==t&&(this.remove(t),t.unsubscribe(),this.debouncedSubscription=null)}}]),n}(A);function Bw(t){t.debouncedNext()}var Vw=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"create",value:function(t){return"undefined"==typeof MutationObserver?null:new MutationObserver(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({factory:function(){return new t},token:t,providedIn:"root"}),t}(),zw=function(){var t=function(){function t(e){_(this,t),this._mutationObserverFactory=e,this._observedElements=new Map}return b(t,[{key:"ngOnDestroy",value:function(){var t=this;this._observedElements.forEach((function(e,n){return t._cleanupObserver(n)}))}},{key:"observe",value:function(t){var e=this,n=tk(t);return new H((function(t){var i=e._observeElement(n).subscribe(t);return function(){i.unsubscribe(),e._unobserveElement(n)}}))}},{key:"_observeElement",value:function(t){if(this._observedElements.has(t))this._observedElements.get(t).count++;else{var e=new W,n=this._mutationObserverFactory.create((function(t){return e.next(t)}));n&&n.observe(t,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(t,{observer:n,stream:e,count:1})}return this._observedElements.get(t).stream}},{key:"_unobserveElement",value:function(t){this._observedElements.has(t)&&(this._observedElements.get(t).count--,this._observedElements.get(t).count||this._cleanupObserver(t))}},{key:"_cleanupObserver",value:function(t){if(this._observedElements.has(t)){var e=this._observedElements.get(t),n=e.observer,i=e.stream;n&&n.disconnect(),i.complete(),this._observedElements.delete(t)}}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Vw))},t.\u0275prov=Ot({factory:function(){return new t(ge(Vw))},token:t,providedIn:"root"}),t}(),Ww=function(){var t=function(){function t(e,n,i){_(this,t),this._contentObserver=e,this._elementRef=n,this._ngZone=i,this.event=new Ou,this._disabled=!1,this._currentSubscription=null}return b(t,[{key:"ngAfterContentInit",value:function(){this._currentSubscription||this.disabled||this._subscribe()}},{key:"ngOnDestroy",value:function(){this._unsubscribe()}},{key:"_subscribe",value:function(){var t=this;this._unsubscribe();var e=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular((function(){t._currentSubscription=(t.debounce?e.pipe(Nw(t.debounce)):e).subscribe(t.event)}))}},{key:"_unsubscribe",value:function(){this._currentSubscription&&this._currentSubscription.unsubscribe()}},{key:"disabled",get:function(){return this._disabled},set:function(t){this._disabled=Jb(t),this._disabled?this._unsubscribe():this._subscribe()}},{key:"debounce",get:function(){return this._debounce},set:function(t){this._debounce=Zb(t),this._subscribe()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(zw),rs(Pl),rs(Mc))},t.\u0275dir=Ve({type:t,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),t}(),Uw=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[Vw]}),t}();function qw(t,e){return(t.getAttribute(e)||"").match(/\S+/g)||[]}var Gw=0,Kw=new Map,Jw=null,Zw=function(){var t=function(){function t(e,n){_(this,t),this._platform=n,this._document=e}return b(t,[{key:"describe",value:function(t,e){this._canBeDescribed(t,e)&&("string"!=typeof e?(this._setMessageId(e),Kw.set(e,{messageElement:e,referenceCount:0})):Kw.has(e)||this._createMessageElement(e),this._isElementDescribedByMessage(t,e)||this._addMessageReference(t,e))}},{key:"removeDescription",value:function(t,e){if(this._isElementNode(t)){if(this._isElementDescribedByMessage(t,e)&&this._removeMessageReference(t,e),"string"==typeof e){var n=Kw.get(e);n&&0===n.referenceCount&&this._deleteMessageElement(e)}Jw&&0===Jw.childNodes.length&&this._deleteMessagesContainer()}}},{key:"ngOnDestroy",value:function(){for(var t=this._document.querySelectorAll("[".concat("cdk-describedby-host","]")),e=0;e-1&&e!==n._activeItemIndex&&(n._activeItemIndex=e)}}))}return b(t,[{key:"skipPredicate",value:function(t){return this._skipPredicateFn=t,this}},{key:"withWrap",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._wrap=t,this}},{key:"withVerticalOrientation",value:function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._vertical=t,this}},{key:"withHorizontalOrientation",value:function(t){return this._horizontal=t,this}},{key:"withAllowedModifierKeys",value:function(t){return this._allowedModifierKeys=t,this}},{key:"withTypeAhead",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:200;if(this._items.length&&this._items.some((function(t){return"function"!=typeof t.getLabel})))throw Error("ListKeyManager items in typeahead mode must implement the `getLabel` method.");return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(Cv((function(e){return t._pressedLetters.push(e)})),Nw(e),gg((function(){return t._pressedLetters.length>0})),nt((function(){return t._pressedLetters.join("")}))).subscribe((function(e){for(var n=t._getItemsArray(),i=1;i-1}));switch(n){case 9:return void this.tabOut.next();case 40:if(this._vertical&&i){this.setNextItemActive();break}return;case 38:if(this._vertical&&i){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&i){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&i){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&i){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&i){this.setLastItemActive();break}return;default:return void((i||iw(t,"shiftKey"))&&(t.key&&1===t.key.length?this._letterKeyStream.next(t.key.toLocaleUpperCase()):(n>=65&&n<=90||n>=48&&n<=57)&&this._letterKeyStream.next(String.fromCharCode(n))))}this._pressedLetters=[],t.preventDefault()}},{key:"isTyping",value:function(){return this._pressedLetters.length>0}},{key:"setFirstItemActive",value:function(){this._setActiveItemByIndex(0,1)}},{key:"setLastItemActive",value:function(){this._setActiveItemByIndex(this._items.length-1,-1)}},{key:"setNextItemActive",value:function(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}},{key:"setPreviousItemActive",value:function(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}},{key:"updateActiveItem",value:function(t){var e=this._getItemsArray(),n="number"==typeof t?t:e.indexOf(t),i=e[n];this._activeItem=null==i?null:i,this._activeItemIndex=n}},{key:"_setActiveItemByDelta",value:function(t){this._wrap?this._setActiveInWrapMode(t):this._setActiveInDefaultMode(t)}},{key:"_setActiveInWrapMode",value:function(t){for(var e=this._getItemsArray(),n=1;n<=e.length;n++){var i=(this._activeItemIndex+t*n+e.length)%e.length;if(!this._skipPredicateFn(e[i]))return void this.setActiveItem(i)}}},{key:"_setActiveInDefaultMode",value:function(t){this._setActiveItemByIndex(this._activeItemIndex+t,t)}},{key:"_setActiveItemByIndex",value:function(t,e){var n=this._getItemsArray();if(n[t]){for(;this._skipPredicateFn(n[t]);)if(!n[t+=e])return;this.setActiveItem(t)}}},{key:"_getItemsArray",value:function(){return this._items instanceof Iu?this._items.toArray():this._items}},{key:"activeItemIndex",get:function(){return this._activeItemIndex}},{key:"activeItem",get:function(){return this._activeItem}}]),t}(),Qw=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"setActiveItem",value:function(t){this.activeItem&&this.activeItem.setInactiveStyles(),r(i(n.prototype),"setActiveItem",this).call(this,t),this.activeItem&&this.activeItem.setActiveStyles()}}]),n}($w),Xw=function(t){f(n,t);var e=v(n);function n(){var t;return _(this,n),(t=e.apply(this,arguments))._origin="program",t}return b(n,[{key:"setFocusOrigin",value:function(t){return this._origin=t,this}},{key:"setActiveItem",value:function(t){r(i(n.prototype),"setActiveItem",this).call(this,t),this.activeItem&&this.activeItem.focus(this._origin)}}]),n}($w),tM=function(){var t=function(){function t(e){_(this,t),this._platform=e}return b(t,[{key:"isDisabled",value:function(t){return t.hasAttribute("disabled")}},{key:"isVisible",value:function(t){return function(t){return!!(t.offsetWidth||t.offsetHeight||"function"==typeof t.getClientRects&&t.getClientRects().length)}(t)&&"visible"===getComputedStyle(t).visibility}},{key:"isTabbable",value:function(t){if(!this._platform.isBrowser)return!1;var e,n=function(t){try{return t.frameElement}catch(nj){return null}}((e=t).ownerDocument&&e.ownerDocument.defaultView||window);if(n){if(-1===nM(n))return!1;if(!this.isVisible(n))return!1}var i=t.nodeName.toLowerCase(),r=nM(t);return t.hasAttribute("contenteditable")?-1!==r:"iframe"!==i&&"object"!==i&&!(this._platform.WEBKIT&&this._platform.IOS&&!function(t){var e=t.nodeName.toLowerCase(),n="input"===e&&t.type;return"text"===n||"password"===n||"select"===e||"textarea"===e}(t))&&("audio"===i?!!t.hasAttribute("controls")&&-1!==r:"video"===i?-1!==r&&(null!==r||this._platform.FIREFOX||t.hasAttribute("controls")):t.tabIndex>=0)}},{key:"isFocusable",value:function(t,e){return function(t){return!function(t){return function(t){return"input"==t.nodeName.toLowerCase()}(t)&&"hidden"==t.type}(t)&&(function(t){var e=t.nodeName.toLowerCase();return"input"===e||"select"===e||"button"===e||"textarea"===e}(t)||function(t){return function(t){return"a"==t.nodeName.toLowerCase()}(t)&&t.hasAttribute("href")}(t)||t.hasAttribute("contenteditable")||eM(t))}(t)&&!this.isDisabled(t)&&((null==e?void 0:e.ignoreVisibility)||this.isVisible(t))}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Dk))},t.\u0275prov=Ot({factory:function(){return new t(ge(Dk))},token:t,providedIn:"root"}),t}();function eM(t){if(!t.hasAttribute("tabindex")||void 0===t.tabIndex)return!1;var e=t.getAttribute("tabindex");return"-32768"!=e&&!(!e||isNaN(parseInt(e,10)))}function nM(t){if(!eM(t))return null;var e=parseInt(t.getAttribute("tabindex")||"",10);return isNaN(e)?-1:e}var iM=function(){function t(e,n,i,r){var a=this,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];_(this,t),this._element=e,this._checker=n,this._ngZone=i,this._document=r,this._hasAttached=!1,this.startAnchorListener=function(){return a.focusLastTabbableElement()},this.endAnchorListener=function(){return a.focusFirstTabbableElement()},this._enabled=!0,o||this.attachAnchors()}return b(t,[{key:"destroy",value:function(){var t=this._startAnchor,e=this._endAnchor;t&&(t.removeEventListener("focus",this.startAnchorListener),t.parentNode&&t.parentNode.removeChild(t)),e&&(e.removeEventListener("focus",this.endAnchorListener),e.parentNode&&e.parentNode.removeChild(e)),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}},{key:"attachAnchors",value:function(){var t=this;return!!this._hasAttached||(this._ngZone.runOutsideAngular((function(){t._startAnchor||(t._startAnchor=t._createAnchor(),t._startAnchor.addEventListener("focus",t.startAnchorListener)),t._endAnchor||(t._endAnchor=t._createAnchor(),t._endAnchor.addEventListener("focus",t.endAnchorListener))})),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}},{key:"focusInitialElementWhenReady",value:function(){var t=this;return new Promise((function(e){t._executeOnStable((function(){return e(t.focusInitialElement())}))}))}},{key:"focusFirstTabbableElementWhenReady",value:function(){var t=this;return new Promise((function(e){t._executeOnStable((function(){return e(t.focusFirstTabbableElement())}))}))}},{key:"focusLastTabbableElementWhenReady",value:function(){var t=this;return new Promise((function(e){t._executeOnStable((function(){return e(t.focusLastTabbableElement())}))}))}},{key:"_getRegionBoundary",value:function(t){for(var e=this._element.querySelectorAll("[cdk-focus-region-".concat(t,"], ")+"[cdkFocusRegion".concat(t,"], ")+"[cdk-focus-".concat(t,"]")),n=0;n=0;n--){var i=e[n].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[n]):null;if(i)return i}return null}},{key:"_createAnchor",value:function(){var t=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,t),t.classList.add("cdk-visually-hidden"),t.classList.add("cdk-focus-trap-anchor"),t.setAttribute("aria-hidden","true"),t}},{key:"_toggleAnchorTabIndex",value:function(t,e){t?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}},{key:"toggleAnchors",value:function(t){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(t,this._startAnchor),this._toggleAnchorTabIndex(t,this._endAnchor))}},{key:"_executeOnStable",value:function(t){this._ngZone.isStable?t():this._ngZone.onStable.asObservable().pipe(wv(1)).subscribe(t)}},{key:"enabled",get:function(){return this._enabled},set:function(t){this._enabled=t,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(t,this._startAnchor),this._toggleAnchorTabIndex(t,this._endAnchor))}}]),t}(),rM=function(){var t=function(){function t(e,n,i){_(this,t),this._checker=e,this._ngZone=n,this._document=i}return b(t,[{key:"create",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return new iM(t,this._checker,this._ngZone,this._document,e)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(tM),ge(Mc),ge(id))},t.\u0275prov=Ot({factory:function(){return new t(ge(tM),ge(Mc),ge(id))},token:t,providedIn:"root"}),t}();"undefined"!=typeof Element&∈var aM=new se("liveAnnouncerElement",{providedIn:"root",factory:function(){return null}}),oM=new se("LIVE_ANNOUNCER_DEFAULT_OPTIONS"),sM=function(){var t=function(){function t(e,n,i,r){_(this,t),this._ngZone=n,this._defaultOptions=r,this._document=i,this._liveElement=e||this._createLiveElement()}return b(t,[{key:"announce",value:function(t){for(var e,n,i=this,r=this._defaultOptions,a=arguments.length,o=new Array(a>1?a-1:0),s=1;s1&&void 0!==arguments[1]&&arguments[1];if(!this._platform.isBrowser)return pg(null);var n=tk(t),i=Ak(n)||this._getDocument(),r=this._elementInfo.get(n);if(r)return e&&(r.checkChildren=!0),r.subject.asObservable();var a={checkChildren:e,subject:new W,rootNode:i};return this._elementInfo.set(n,a),this._registerGlobalListeners(a),a.subject.asObservable()}},{key:"stopMonitoring",value:function(t){var e=tk(t),n=this._elementInfo.get(e);n&&(n.subject.complete(),this._setClasses(e),this._elementInfo.delete(e),this._removeGlobalListeners(n))}},{key:"focusVia",value:function(t,e,n){var i=tk(t);this._setOriginForCurrentEventQueue(e),"function"==typeof i.focus&&i.focus(n)}},{key:"ngOnDestroy",value:function(){var t=this;this._elementInfo.forEach((function(e,n){return t.stopMonitoring(n)}))}},{key:"_getDocument",value:function(){return this._document||document}},{key:"_getWindow",value:function(){return this._getDocument().defaultView||window}},{key:"_toggleClass",value:function(t,e,n){n?t.classList.add(e):t.classList.remove(e)}},{key:"_getFocusOrigin",value:function(t){return this._origin?this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:this._wasCausedByTouch(t)?"touch":"program"}},{key:"_setClasses",value:function(t,e){this._toggleClass(t,"cdk-focused",!!e),this._toggleClass(t,"cdk-touch-focused","touch"===e),this._toggleClass(t,"cdk-keyboard-focused","keyboard"===e),this._toggleClass(t,"cdk-mouse-focused","mouse"===e),this._toggleClass(t,"cdk-program-focused","program"===e)}},{key:"_setOriginForCurrentEventQueue",value:function(t){var e=this;this._ngZone.runOutsideAngular((function(){e._origin=t,0===e._detectionMode&&(e._originTimeoutId=setTimeout((function(){return e._origin=null}),1))}))}},{key:"_wasCausedByTouch",value:function(t){var e=hM(t);return this._lastTouchTarget instanceof Node&&e instanceof Node&&(e===this._lastTouchTarget||e.contains(this._lastTouchTarget))}},{key:"_onFocus",value:function(t,e){var n=this._elementInfo.get(e);if(n&&(n.checkChildren||e===hM(t))){var i=this._getFocusOrigin(t);this._setClasses(e,i),this._emitOrigin(n.subject,i),this._lastFocusOrigin=i}}},{key:"_onBlur",value:function(t,e){var n=this._elementInfo.get(e);!n||n.checkChildren&&t.relatedTarget instanceof Node&&e.contains(t.relatedTarget)||(this._setClasses(e),this._emitOrigin(n.subject,null))}},{key:"_emitOrigin",value:function(t,e){this._ngZone.run((function(){return t.next(e)}))}},{key:"_registerGlobalListeners",value:function(t){var e=this;if(this._platform.isBrowser){var n=t.rootNode,i=this._rootNodeFocusListenerCount.get(n)||0;i||this._ngZone.runOutsideAngular((function(){n.addEventListener("focus",e._rootNodeFocusAndBlurListener,cM),n.addEventListener("blur",e._rootNodeFocusAndBlurListener,cM)})),this._rootNodeFocusListenerCount.set(n,i+1),1==++this._monitoredElementCount&&this._ngZone.runOutsideAngular((function(){var t=e._getDocument(),n=e._getWindow();t.addEventListener("keydown",e._documentKeydownListener,cM),t.addEventListener("mousedown",e._documentMousedownListener,cM),t.addEventListener("touchstart",e._documentTouchstartListener,cM),n.addEventListener("focus",e._windowFocusListener)}))}}},{key:"_removeGlobalListeners",value:function(t){var e=t.rootNode;if(this._rootNodeFocusListenerCount.has(e)){var n=this._rootNodeFocusListenerCount.get(e);n>1?this._rootNodeFocusListenerCount.set(e,n-1):(e.removeEventListener("focus",this._rootNodeFocusAndBlurListener,cM),e.removeEventListener("blur",this._rootNodeFocusAndBlurListener,cM),this._rootNodeFocusListenerCount.delete(e))}if(!--this._monitoredElementCount){var i=this._getDocument(),r=this._getWindow();i.removeEventListener("keydown",this._documentKeydownListener,cM),i.removeEventListener("mousedown",this._documentMousedownListener,cM),i.removeEventListener("touchstart",this._documentTouchstartListener,cM),r.removeEventListener("focus",this._windowFocusListener),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._touchTimeoutId),clearTimeout(this._originTimeoutId)}}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Mc),ge(Dk),ge(id,8),ge(uM,8))},t.\u0275prov=Ot({factory:function(){return new t(ge(Mc),ge(Dk),ge(id,8),ge(uM,8))},token:t,providedIn:"root"}),t}();function hM(t){return t.composedPath?t.composedPath()[0]:t.target}var fM=function(){var t=function(){function t(e,n){_(this,t),this._elementRef=e,this._focusMonitor=n,this.cdkFocusChange=new Ou}return b(t,[{key:"ngAfterViewInit",value:function(){var t=this;this._monitorSubscription=this._focusMonitor.monitor(this._elementRef,this._elementRef.nativeElement.hasAttribute("cdkMonitorSubtreeFocus")).subscribe((function(e){return t.cdkFocusChange.emit(e)}))}},{key:"ngOnDestroy",value:function(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(dM))},t.\u0275dir=Ve({type:t,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"}}),t}(),pM=function(){var t=function(){function t(e,n){_(this,t),this._platform=e,this._document=n}return b(t,[{key:"getHighContrastMode",value:function(){if(!this._platform.isBrowser)return 0;var t=this._document.createElement("div");t.style.backgroundColor="rgb(1,2,3)",t.style.position="absolute",this._document.body.appendChild(t);var e=this._document.defaultView||window,n=e&&e.getComputedStyle?e.getComputedStyle(t):null,i=(n&&n.backgroundColor||"").replace(/ /g,"");switch(this._document.body.removeChild(t),i){case"rgb(0,0,0)":return 2;case"rgb(255,255,255)":return 1}return 0}},{key:"_applyBodyHighContrastModeCssClasses",value:function(){if(this._platform.isBrowser&&this._document.body){var t=this._document.body.classList;t.remove("cdk-high-contrast-active"),t.remove("cdk-high-contrast-black-on-white"),t.remove("cdk-high-contrast-white-on-black");var e=this.getHighContrastMode();1===e?(t.add("cdk-high-contrast-active"),t.add("cdk-high-contrast-black-on-white")):2===e&&(t.add("cdk-high-contrast-active"),t.add("cdk-high-contrast-white-on-black"))}}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Dk),ge(id))},t.\u0275prov=Ot({factory:function(){return new t(ge(Dk),ge(id))},token:t,providedIn:"root"}),t}(),mM=function(){var t=function t(e){_(this,t),e._applyBodyHighContrastModeCssClasses()};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)(ge(pM))},imports:[[Lk,Uw]]}),t}(),gM=new Nl("10.1.1"),vM=["*",[["mat-option"],["ng-container"]]],_M=["*","mat-option, ng-container"];function yM(t,e){if(1&t&&cs(0,"mat-pseudo-checkbox",3),2&t){var n=Ms();os("state",n.selected?"checked":"unchecked")("disabled",n.disabled)}}var bM=["*"],kM=new Nl("10.1.1"),wM=new se("mat-sanity-checks",{providedIn:"root",factory:function(){return!0}}),MM=function(){var t=function(){function t(e,n,i){_(this,t),this._hasDoneGlobalChecks=!1,this._document=i,e._applyBodyHighContrastModeCssClasses(),this._sanityChecks=n,this._hasDoneGlobalChecks||(this._checkDoctypeIsDefined(),this._checkThemeIsPresent(),this._checkCdkVersionMatch(),this._hasDoneGlobalChecks=!0)}return b(t,[{key:"_getDocument",value:function(){var t=this._document||document;return"object"==typeof t&&t?t:null}},{key:"_getWindow",value:function(){var t=this._getDocument(),e=(null==t?void 0:t.defaultView)||window;return"object"==typeof e&&e?e:null}},{key:"_checksAreEnabled",value:function(){return ir()&&!this._isTestEnv()}},{key:"_isTestEnv",value:function(){var t=this._getWindow();return t&&(t.__karma__||t.jasmine)}},{key:"_checkDoctypeIsDefined",value:function(){var t=this._checksAreEnabled()&&(!0===this._sanityChecks||this._sanityChecks.doctype),e=this._getDocument();t&&e&&!e.doctype&&console.warn("Current document does not have a doctype. This may cause some Angular Material components not to behave as expected.")}},{key:"_checkThemeIsPresent",value:function(){var t=!this._checksAreEnabled()||!1===this._sanityChecks||!this._sanityChecks.theme,e=this._getDocument();if(!t&&e&&e.body&&"function"==typeof getComputedStyle){var n=e.createElement("div");n.classList.add("mat-theme-loaded-marker"),e.body.appendChild(n);var i=getComputedStyle(n);i&&"none"!==i.display&&console.warn("Could not find Angular Material core theme. Most Material components may not work as expected. For more info refer to the theming guide: https://material.angular.io/guide/theming"),e.body.removeChild(n)}}},{key:"_checkCdkVersionMatch",value:function(){this._checksAreEnabled()&&(!0===this._sanityChecks||this._sanityChecks.version)&&kM.full!==gM.full&&console.warn("The Angular Material version ("+kM.full+") does not match the Angular CDK version ("+gM.full+").\nPlease ensure the versions of these two packages exactly match.")}}]),t}();return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)(ge(pM),ge(wM,8),ge(id,8))},imports:[[Rk],Rk]}),t}();function SM(t){return function(t){f(n,t);var e=v(n);function n(){var t;_(this,n);for(var i=arguments.length,r=new Array(i),a=0;a1&&void 0!==arguments[1]?arguments[1]:0;return function(t){f(i,t);var n=v(i);function i(){var t;_(this,i);for(var r=arguments.length,a=new Array(r),o=0;o2&&void 0!==arguments[2]?arguments[2]:{},r=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),a=Object.assign(Object.assign({},OM),i.animation);i.centered&&(t=r.left+r.width/2,e=r.top+r.height/2);var o=i.radius||NM(t,e,r),s=t-r.left,l=e-r.top,u=a.enterDuration,c=document.createElement("div");c.classList.add("mat-ripple-element"),c.style.left="".concat(s-o,"px"),c.style.top="".concat(l-o,"px"),c.style.height="".concat(2*o,"px"),c.style.width="".concat(2*o,"px"),null!=i.color&&(c.style.backgroundColor=i.color),c.style.transitionDuration="".concat(u,"ms"),this._containerElement.appendChild(c),RM(c),c.style.transform="scale(1)";var d=new PM(this,c,i);return d.state=0,this._activeRipples.add(d),i.persistent||(this._mostRecentTransientRipple=d),this._runTimeoutOutsideZone((function(){var t=d===n._mostRecentTransientRipple;d.state=1,i.persistent||t&&n._isPointerDown||d.fadeOut()}),u),d}},{key:"fadeOutRipple",value:function(t){var e=this._activeRipples.delete(t);if(t===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),this._activeRipples.size||(this._containerRect=null),e){var n=t.element,i=Object.assign(Object.assign({},OM),t.config.animation);n.style.transitionDuration="".concat(i.exitDuration,"ms"),n.style.opacity="0",t.state=2,this._runTimeoutOutsideZone((function(){t.state=3,n.parentNode.removeChild(n)}),i.exitDuration)}}},{key:"fadeOutAll",value:function(){this._activeRipples.forEach((function(t){return t.fadeOut()}))}},{key:"setupTriggerEvents",value:function(t){var e=tk(t);e&&e!==this._triggerElement&&(this._removeTriggerEvents(),this._triggerElement=e,this._registerEvents(IM))}},{key:"handleEvent",value:function(t){"mousedown"===t.type?this._onMousedown(t):"touchstart"===t.type?this._onTouchStart(t):this._onPointerUp(),this._pointerUpEventsRegistered||(this._registerEvents(YM),this._pointerUpEventsRegistered=!0)}},{key:"_onMousedown",value:function(t){var e=lM(t),n=this._lastTouchStartEvent&&Date.now()1&&void 0!==arguments[1]?arguments[1]:0;this._ngZone.runOutsideAngular((function(){return setTimeout(t,e)}))}},{key:"_registerEvents",value:function(t){var e=this;this._ngZone.runOutsideAngular((function(){t.forEach((function(t){e._triggerElement.addEventListener(t,e,AM)}))}))}},{key:"_removeTriggerEvents",value:function(){var t=this;this._triggerElement&&(IM.forEach((function(e){t._triggerElement.removeEventListener(e,t,AM)})),this._pointerUpEventsRegistered&&YM.forEach((function(e){t._triggerElement.removeEventListener(e,t,AM)})))}}]),t}();function RM(t){window.getComputedStyle(t).getPropertyValue("opacity")}function NM(t,e,n){var i=Math.max(Math.abs(t-n.left),Math.abs(t-n.right)),r=Math.max(Math.abs(e-n.top),Math.abs(e-n.bottom));return Math.sqrt(i*i+r*r)}var HM=new se("mat-ripple-global-options"),jM=function(){var t=function(){function t(e,n,i,r,a){_(this,t),this._elementRef=e,this._animationMode=a,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=r||{},this._rippleRenderer=new FM(this,n,e,i)}return b(t,[{key:"ngOnInit",value:function(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}},{key:"ngOnDestroy",value:function(){this._rippleRenderer._removeTriggerEvents()}},{key:"fadeOutAll",value:function(){this._rippleRenderer.fadeOutAll()}},{key:"_setupTriggerEventsIfEnabled",value:function(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}},{key:"launch",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0;return"number"==typeof t?this._rippleRenderer.fadeInRipple(t,e,Object.assign(Object.assign({},this.rippleConfig),n)):this._rippleRenderer.fadeInRipple(0,0,Object.assign(Object.assign({},this.rippleConfig),t))}},{key:"disabled",get:function(){return this._disabled},set:function(t){this._disabled=t,this._setupTriggerEventsIfEnabled()}},{key:"trigger",get:function(){return this._trigger||this._elementRef.nativeElement},set:function(t){this._trigger=t,this._setupTriggerEventsIfEnabled()}},{key:"rippleConfig",get:function(){return{centered:this.centered,radius:this.radius,color:this.color,animation:Object.assign(Object.assign(Object.assign({},this._globalOptions.animation),"NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{}),this.animation),terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}},{key:"rippleDisabled",get:function(){return this.disabled||!!this._globalOptions.disabled}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Mc),rs(Dk),rs(HM,8),rs(cg,8))},t.\u0275dir=Ve({type:t,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(t,e){2&t&&Vs("mat-ripple-unbounded",e.unbounded)},inputs:{radius:["matRippleRadius","radius"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"],color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],animation:["matRippleAnimation","animation"]},exportAs:["matRipple"]}),t}(),BM=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[MM,Lk],MM]}),t}(),VM=function(){var t=function t(e){_(this,t),this._animationMode=e,this.state="unchecked",this.disabled=!1};return t.\u0275fac=function(e){return new(e||t)(rs(cg,8))},t.\u0275cmp=Fe({type:t,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:8,hostBindings:function(t,e){2&t&&Vs("mat-pseudo-checkbox-indeterminate","indeterminate"===e.state)("mat-pseudo-checkbox-checked","checked"===e.state)("mat-pseudo-checkbox-disabled",e.disabled)("_mat-animation-noopable","NoopAnimations"===e._animationMode)},inputs:{state:"state",disabled:"disabled"},decls:0,vars:0,template:function(t,e){},styles:['.mat-pseudo-checkbox{width:16px;height:16px;border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:transparent}._mat-animation-noopable.mat-pseudo-checkbox{transition:none;animation:none}._mat-animation-noopable.mat-pseudo-checkbox::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{top:5px;left:1px;width:10px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{top:2.4px;left:1px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}\n'],encapsulation:2,changeDetection:0}),t}(),zM=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}(),WM=SM((function t(){_(this,t)})),UM=0,qM=new se("MatOptgroup"),GM=function(){var t=function(t){f(n,t);var e=v(n);function n(){var t;return _(this,n),(t=e.apply(this,arguments))._labelId="mat-optgroup-label-".concat(UM++),t}return n}(WM);return t.\u0275fac=function(e){return KM(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["mat-optgroup"]],hostAttrs:["role","group",1,"mat-optgroup"],hostVars:4,hostBindings:function(t,e){2&t&&(ts("aria-disabled",e.disabled.toString())("aria-labelledby",e._labelId),Vs("mat-optgroup-disabled",e.disabled))},inputs:{disabled:"disabled",label:"label"},exportAs:["matOptgroup"],features:[Cl([{provide:qM,useExisting:t}]),fl],ngContentSelectors:_M,decls:4,vars:2,consts:[[1,"mat-optgroup-label",3,"id"]],template:function(t,e){1&t&&(xs(vM),ls(0,"label",0),rl(1),Cs(2),us(),Cs(3,1)),2&t&&(os("id",e._labelId),Gr(1),ol("",e.label," "))},styles:[".mat-optgroup-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup-label[disabled]{cursor:default}[dir=rtl] .mat-optgroup-label{text-align:right}.mat-optgroup-label .mat-icon{margin-right:16px;vertical-align:middle}.mat-optgroup-label .mat-icon svg{vertical-align:top}[dir=rtl] .mat-optgroup-label .mat-icon{margin-left:16px;margin-right:0}\n"],encapsulation:2,changeDetection:0}),t}(),KM=Bi(GM),JM=0,ZM=function t(e){var n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];_(this,t),this.source=e,this.isUserInput=n},$M=new se("MAT_OPTION_PARENT_COMPONENT"),QM=function(){var t=function(){function t(e,n,i,r){_(this,t),this._element=e,this._changeDetectorRef=n,this._parent=i,this.group=r,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id="mat-option-".concat(JM++),this.onSelectionChange=new Ou,this._stateChanges=new W}return b(t,[{key:"select",value:function(){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}},{key:"deselect",value:function(){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}},{key:"focus",value:function(t,e){var n=this._getHostElement();"function"==typeof n.focus&&n.focus(e)}},{key:"setActiveStyles",value:function(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}},{key:"setInactiveStyles",value:function(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}},{key:"getLabel",value:function(){return this.viewValue}},{key:"_handleKeydown",value:function(t){13!==t.keyCode&&32!==t.keyCode||iw(t)||(this._selectViaInteraction(),t.preventDefault())}},{key:"_selectViaInteraction",value:function(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}},{key:"_getAriaSelected",value:function(){return this.selected||!this.multiple&&null}},{key:"_getTabIndex",value:function(){return this.disabled?"-1":"0"}},{key:"_getHostElement",value:function(){return this._element.nativeElement}},{key:"ngAfterViewChecked",value:function(){if(this._selected){var t=this.viewValue;t!==this._mostRecentViewValue&&(this._mostRecentViewValue=t,this._stateChanges.next())}}},{key:"ngOnDestroy",value:function(){this._stateChanges.complete()}},{key:"_emitSelectionChangeEvent",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.onSelectionChange.emit(new ZM(this,t))}},{key:"multiple",get:function(){return this._parent&&this._parent.multiple}},{key:"selected",get:function(){return this._selected}},{key:"disabled",get:function(){return this.group&&this.group.disabled||this._disabled},set:function(t){this._disabled=Jb(t)}},{key:"disableRipple",get:function(){return this._parent&&this._parent.disableRipple}},{key:"active",get:function(){return this._active}},{key:"viewValue",get:function(){return(this._getHostElement().textContent||"").trim()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(xo),rs($M,8),rs(qM,8))},t.\u0275cmp=Fe({type:t,selectors:[["mat-option"]],hostAttrs:["role","option",1,"mat-option","mat-focus-indicator"],hostVars:12,hostBindings:function(t,e){1&t&&vs("click",(function(){return e._selectViaInteraction()}))("keydown",(function(t){return e._handleKeydown(t)})),2&t&&(cl("id",e.id),ts("tabindex",e._getTabIndex())("aria-selected",e._getAriaSelected())("aria-disabled",e.disabled.toString()),Vs("mat-selected",e.selected)("mat-option-multiple",e.multiple)("mat-active",e.active)("mat-option-disabled",e.disabled))},inputs:{id:"id",disabled:"disabled",value:"value"},outputs:{onSelectionChange:"onSelectionChange"},exportAs:["matOption"],ngContentSelectors:bM,decls:4,vars:3,consts:[["class","mat-option-pseudo-checkbox",3,"state","disabled",4,"ngIf"],[1,"mat-option-text"],["mat-ripple","",1,"mat-option-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mat-option-pseudo-checkbox",3,"state","disabled"]],template:function(t,e){1&t&&(xs(),ns(0,yM,1,2,"mat-pseudo-checkbox",0),ls(1,"span",1),Cs(2),us(),cs(3,"div",2)),2&t&&(os("ngIf",e.multiple),Gr(3),os("matRippleTrigger",e._getHostElement())("matRippleDisabled",e.disabled||e.disableRipple))},directives:[wh,jM,VM],styles:[".mat-option{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative;cursor:pointer;outline:none;display:flex;flex-direction:row;max-width:100%;box-sizing:border-box;align-items:center;-webkit-tap-highlight-color:transparent}.mat-option[disabled]{cursor:default}[dir=rtl] .mat-option{text-align:right}.mat-option .mat-icon{margin-right:16px;vertical-align:middle}.mat-option .mat-icon svg{vertical-align:top}[dir=rtl] .mat-option .mat-icon{margin-left:16px;margin-right:0}.mat-option[aria-disabled=true]{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:32px}[dir=rtl] .mat-optgroup .mat-option:not(.mat-option-multiple){padding-left:16px;padding-right:32px}.cdk-high-contrast-active .mat-option{margin:0 1px}.cdk-high-contrast-active .mat-option.mat-active{border:solid 1px currentColor;margin:0}.mat-option-text{display:inline-block;flex-grow:1;overflow:hidden;text-overflow:ellipsis}.mat-option .mat-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.cdk-high-contrast-active .mat-option .mat-option-ripple{opacity:.5}.mat-option-pseudo-checkbox{margin-right:8px}[dir=rtl] .mat-option-pseudo-checkbox{margin-left:8px;margin-right:0}\n"],encapsulation:2,changeDetection:0}),t}();function XM(t,e,n){if(n.length){for(var i=e.toArray(),r=n.toArray(),a=0,o=0;o*,.mat-flat-button .mat-button-wrapper>*,.mat-stroked-button .mat-button-wrapper>*,.mat-raised-button .mat-button-wrapper>*,.mat-icon-button .mat-button-wrapper>*,.mat-fab .mat-button-wrapper>*,.mat-mini-fab .mat-button-wrapper>*{vertical-align:middle}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button{display:block;font-size:inherit;width:2.5em;height:2.5em}.cdk-high-contrast-active .mat-button,.cdk-high-contrast-active .mat-flat-button,.cdk-high-contrast-active .mat-raised-button,.cdk-high-contrast-active .mat-icon-button,.cdk-high-contrast-active .mat-fab,.cdk-high-contrast-active .mat-mini-fab{outline:solid 1px}\n",oS=["mat-button","mat-flat-button","mat-icon-button","mat-raised-button","mat-stroked-button","mat-mini-fab","mat-fab"],sS=xM(SM(CM((function t(e){_(this,t),this._elementRef=e})))),lS=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;_(this,n),(a=e.call(this,t))._focusMonitor=i,a._animationMode=r,a.isRoundButton=a._hasHostAttributes("mat-fab","mat-mini-fab"),a.isIconButton=a._hasHostAttributes("mat-icon-button");var o,s=d(oS);try{for(s.s();!(o=s.n()).done;){var l=o.value;a._hasHostAttributes(l)&&a._getHostElement().classList.add(l)}}catch(u){s.e(u)}finally{s.f()}return t.nativeElement.classList.add("mat-button-base"),a.isRoundButton&&(a.color="accent"),a}return b(n,[{key:"ngAfterViewInit",value:function(){this._focusMonitor.monitor(this._elementRef,!0)}},{key:"ngOnDestroy",value:function(){this._focusMonitor.stopMonitoring(this._elementRef)}},{key:"focus",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"program",e=arguments.length>1?arguments[1]:void 0;this._focusMonitor.focusVia(this._getHostElement(),t,e)}},{key:"_getHostElement",value:function(){return this._elementRef.nativeElement}},{key:"_isRippleDisabled",value:function(){return this.disableRipple||this.disabled}},{key:"_hasHostAttributes",value:function(){for(var t=this,e=arguments.length,n=new Array(e),i=0;ithis.total&&this.destination.next(t)}}]),n}(A),fS=new Set,pS=function(){var t=function(){function t(e){_(this,t),this._platform=e,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):mS}return b(t,[{key:"matchMedia",value:function(t){return this._platform.WEBKIT&&function(t){if(!fS.has(t))try{tS||((tS=document.createElement("style")).setAttribute("type","text/css"),document.head.appendChild(tS)),tS.sheet&&(tS.sheet.insertRule("@media ".concat(t," {.fx-query-test{ }}"),0),fS.add(t))}catch(e){console.error(e)}}(t),this._matchMedia(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Dk))},t.\u0275prov=Ot({factory:function(){return new t(ge(Dk))},token:t,providedIn:"root"}),t}();function mS(t){return{matches:"all"===t||""===t,media:t,addListener:function(){},removeListener:function(){}}}var gS=function(){var t=function(){function t(e,n){_(this,t),this._mediaMatcher=e,this._zone=n,this._queries=new Map,this._destroySubject=new W}return b(t,[{key:"ngOnDestroy",value:function(){this._destroySubject.next(),this._destroySubject.complete()}},{key:"isMatched",value:function(t){var e=this;return vS(Qb(t)).some((function(t){return e._registerQuery(t).mql.matches}))}},{key:"observe",value:function(t){var e=this,n=ev(vS(Qb(t)).map((function(t){return e._registerQuery(t).observable})));return(n=Iv(n.pipe(wv(1)),n.pipe((function(t){return t.lift(new dS(1))}),Nw(0)))).pipe(nt((function(t){var e={matches:!1,breakpoints:{}};return t.forEach((function(t){e.matches=e.matches||t.matches,e.breakpoints[t.query]=t.matches})),e})))}},{key:"_registerQuery",value:function(t){var e=this;if(this._queries.has(t))return this._queries.get(t);var n=this._mediaMatcher.matchMedia(t),i={observable:new H((function(t){var i=function(n){return e._zone.run((function(){return t.next(n)}))};return n.addListener(i),function(){n.removeListener(i)}})).pipe(Yv(n),nt((function(e){return{query:t,matches:e.matches}})),yk(this._destroySubject)),mql:n};return this._queries.set(t,i),i}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(pS),ge(Mc))},t.\u0275prov=Ot({factory:function(){return new t(ge(pS),ge(Mc))},token:t,providedIn:"root"}),t}();function vS(t){return t.map((function(t){return t.split(",")})).reduce((function(t,e){return t.concat(e)})).map((function(t){return t.trim()}))}function _S(t,e){if(1&t){var n=ps();ls(0,"div",1),ls(1,"button",2),vs("click",(function(){return Cn(n),Ms().action()})),rl(2),us(),us()}if(2&t){var i=Ms();Gr(2),al(i.data.action)}}function yS(t,e){}var bS=new se("MatSnackBarData"),kS=function t(){_(this,t),this.politeness="assertive",this.announcementMessage="",this.duration=0,this.data=null,this.horizontalPosition="center",this.verticalPosition="bottom"},wS=Math.pow(2,31)-1,MS=function(){function t(e,n){var i=this;_(this,t),this._overlayRef=n,this._afterDismissed=new W,this._afterOpened=new W,this._onAction=new W,this._dismissedByAction=!1,this.containerInstance=e,this.onAction().subscribe((function(){return i.dismiss()})),e._onExit.subscribe((function(){return i._finishDismiss()}))}return b(t,[{key:"dismiss",value:function(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}},{key:"dismissWithAction",value:function(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete())}},{key:"closeWithAction",value:function(){this.dismissWithAction()}},{key:"_dismissAfter",value:function(t){var e=this;this._durationTimeoutId=setTimeout((function(){return e.dismiss()}),Math.min(t,wS))}},{key:"_open",value:function(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}},{key:"_finishDismiss",value:function(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}},{key:"afterDismissed",value:function(){return this._afterDismissed.asObservable()}},{key:"afterOpened",value:function(){return this.containerInstance._onEnter}},{key:"onAction",value:function(){return this._onAction.asObservable()}}]),t}(),SS=function(){var t=function(){function t(e,n){_(this,t),this.snackBarRef=e,this.data=n}return b(t,[{key:"action",value:function(){this.snackBarRef.dismissWithAction()}},{key:"hasAction",get:function(){return!!this.data.action}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(MS),rs(bS))},t.\u0275cmp=Fe({type:t,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-simple-snackbar"],decls:3,vars:2,consts:[["class","mat-simple-snackbar-action",4,"ngIf"],[1,"mat-simple-snackbar-action"],["mat-button","",3,"click"]],template:function(t,e){1&t&&(ls(0,"span"),rl(1),us(),ns(2,_S,3,1,"div",0)),2&t&&(Gr(1),al(e.data.message),Gr(1),os("ngIf",e.hasAction))},directives:[wh,lS],styles:[".mat-simple-snackbar{display:flex;justify-content:space-between;align-items:center;line-height:20px;opacity:1}.mat-simple-snackbar-action{flex-shrink:0;margin:-8px -8px -8px 8px}.mat-simple-snackbar-action button{max-height:36px;min-width:0}[dir=rtl] .mat-simple-snackbar-action{margin-left:-8px;margin-right:8px}\n"],encapsulation:2,changeDetection:0}),t}(),xS={snackBarState:jf("state",[Uf("void, hidden",Wf({transform:"scale(0.8)",opacity:0})),Uf("visible",Wf({transform:"scale(1)",opacity:1})),Gf("* => visible",Bf("150ms cubic-bezier(0, 0, 0.2, 1)")),Gf("* => void, * => hidden",Bf("75ms cubic-bezier(0.4, 0.0, 1, 1)",Wf({opacity:0})))])},CS=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this))._ngZone=t,o._elementRef=i,o._changeDetectorRef=r,o.snackBarConfig=a,o._destroyed=!1,o._onExit=new W,o._onEnter=new W,o._animationState="void",o.attachDomPortal=function(t){return o._assertNotAttached(),o._applySnackBarClasses(),o._portalOutlet.attachDomPortal(t)},o._role="assertive"!==a.politeness||a.announcementMessage?"off"===a.politeness?null:"status":"alert",o}return b(n,[{key:"attachComponentPortal",value:function(t){return this._assertNotAttached(),this._applySnackBarClasses(),this._portalOutlet.attachComponentPortal(t)}},{key:"attachTemplatePortal",value:function(t){return this._assertNotAttached(),this._applySnackBarClasses(),this._portalOutlet.attachTemplatePortal(t)}},{key:"onAnimationEnd",value:function(t){var e=t.toState;if(("void"===e&&"void"!==t.fromState||"hidden"===e)&&this._completeExit(),"visible"===e){var n=this._onEnter;this._ngZone.run((function(){n.next(),n.complete()}))}}},{key:"enter",value:function(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.detectChanges())}},{key:"exit",value:function(){return this._animationState="hidden",this._elementRef.nativeElement.setAttribute("mat-exit",""),this._onExit}},{key:"ngOnDestroy",value:function(){this._destroyed=!0,this._completeExit()}},{key:"_completeExit",value:function(){var t=this;this._ngZone.onMicrotaskEmpty.asObservable().pipe(wv(1)).subscribe((function(){t._onExit.next(),t._onExit.complete()}))}},{key:"_applySnackBarClasses",value:function(){var t=this._elementRef.nativeElement,e=this.snackBarConfig.panelClass;e&&(Array.isArray(e)?e.forEach((function(e){return t.classList.add(e)})):t.classList.add(e)),"center"===this.snackBarConfig.horizontalPosition&&t.classList.add("mat-snack-bar-center"),"top"===this.snackBarConfig.verticalPosition&&t.classList.add("mat-snack-bar-top")}},{key:"_assertNotAttached",value:function(){if(this._portalOutlet.hasAttached())throw Error("Attempting to attach snack bar content after content is already attached")}}]),n}(Jk);return t.\u0275fac=function(e){return new(e||t)(rs(Mc),rs(Pl),rs(xo),rs(kS))},t.\u0275cmp=Fe({type:t,selectors:[["snack-bar-container"]],viewQuery:function(t,e){var n;1&t&&Wu(Qk,!0),2&t&&zu(n=Zu())&&(e._portalOutlet=n.first)},hostAttrs:[1,"mat-snack-bar-container"],hostVars:2,hostBindings:function(t,e){1&t&&_s("@state.done",(function(t){return e.onAnimationEnd(t)})),2&t&&(ts("role",e._role),dl("@state",e._animationState))},features:[fl],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(t,e){1&t&&ns(0,yS,0,0,"ng-template",0)},directives:[Qk],styles:[".mat-snack-bar-container{border-radius:4px;box-sizing:border-box;display:block;margin:24px;max-width:33vw;min-width:344px;padding:14px 16px;min-height:48px;transform-origin:center}.cdk-high-contrast-active .mat-snack-bar-container{border:solid 1px}.mat-snack-bar-handset{width:100%}.mat-snack-bar-handset .mat-snack-bar-container{margin:8px;max-width:100%;min-width:0;width:100%}\n"],encapsulation:2,data:{animation:[xS.snackBarState]}}),t}(),DS=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[Rw,ew,rf,cS,MM],MM]}),t}(),LS=new se("mat-snack-bar-default-options",{providedIn:"root",factory:function(){return new kS}}),TS=function(){var t=function(){function t(e,n,i,r,a,o){_(this,t),this._overlay=e,this._live=n,this._injector=i,this._breakpointObserver=r,this._parentSnackBar=a,this._defaultConfig=o,this._snackBarRefAtThisLevel=null,this.simpleSnackBarComponent=SS,this.snackBarContainerComponent=CS,this.handsetCssClass="mat-snack-bar-handset"}return b(t,[{key:"openFromComponent",value:function(t,e){return this._attach(t,e)}},{key:"openFromTemplate",value:function(t,e){return this._attach(t,e)}},{key:"open",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2?arguments[2]:void 0,i=Object.assign(Object.assign({},this._defaultConfig),n);return i.data={message:t,action:e},i.announcementMessage===t&&(i.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,i)}},{key:"dismiss",value:function(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}},{key:"ngOnDestroy",value:function(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}},{key:"_attachSnackBarContainer",value:function(t,e){var n=new nw(e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,new WeakMap([[kS,e]])),i=new qk(this.snackBarContainerComponent,e.viewContainerRef,n),r=t.attach(i);return r.instance.snackBarConfig=e,r.instance}},{key:"_attach",value:function(t,e){var n=this,i=Object.assign(Object.assign(Object.assign({},new kS),this._defaultConfig),e),r=this._createOverlay(i),a=this._attachSnackBarContainer(r,i),o=new MS(a,r);if(t instanceof eu){var s=new Gk(t,null,{$implicit:i.data,snackBarRef:o});o.instance=a.attachTemplatePortal(s)}else{var l=this._createInjector(i,o),u=new qk(t,void 0,l),c=a.attachComponentPortal(u);o.instance=c.instance}return this._breakpointObserver.observe("(max-width: 599.99px) and (orientation: portrait)").pipe(yk(r.detachments())).subscribe((function(t){var e=r.overlayElement.classList;t.matches?e.add(n.handsetCssClass):e.remove(n.handsetCssClass)})),this._animateSnackBar(o,i),this._openedSnackBarRef=o,this._openedSnackBarRef}},{key:"_animateSnackBar",value:function(t,e){var n=this;t.afterDismissed().subscribe((function(){n._openedSnackBarRef==t&&(n._openedSnackBarRef=null),e.announcementMessage&&n._live.clear()})),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe((function(){t.containerInstance.enter()})),this._openedSnackBarRef.dismiss()):t.containerInstance.enter(),e.duration&&e.duration>0&&t.afterOpened().subscribe((function(){return t._dismissAfter(e.duration)})),e.announcementMessage&&this._live.announce(e.announcementMessage,e.politeness)}},{key:"_createOverlay",value:function(t){var e=new hw;e.direction=t.direction;var n=this._overlay.position().global(),i="rtl"===t.direction,r="left"===t.horizontalPosition||"start"===t.horizontalPosition&&!i||"end"===t.horizontalPosition&&i,a=!r&&"center"!==t.horizontalPosition;return r?n.left("0"):a?n.right("0"):n.centerHorizontally(),"top"===t.verticalPosition?n.top("0"):n.bottom("0"),e.positionStrategy=n,this._overlay.create(e)}},{key:"_createInjector",value:function(t,e){return new nw(t&&t.viewContainerRef&&t.viewContainerRef.injector||this._injector,new WeakMap([[MS,e],[bS,t.data]]))}},{key:"_openedSnackBarRef",get:function(){var t=this._parentSnackBar;return t?t._openedSnackBarRef:this._snackBarRefAtThisLevel},set:function(t){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=t:this._snackBarRefAtThisLevel=t}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Pw),ge(sM),ge(zo),ge(gS),ge(t,12),ge(LS))},t.\u0275prov=Ot({factory:function(){return new t(ge(Pw),ge(sM),ge(le),ge(gS),ge(t,12),ge(LS))},token:t,providedIn:DS}),t}();function ES(){for(var t=arguments.length,e=new Array(t),n=0;n1&&void 0!==arguments[1]?arguments[1]:t;return this._fontCssClassesByAlias.set(t,e),this}},{key:"classNameForFontAlias",value:function(t){return this._fontCssClassesByAlias.get(t)||t}},{key:"setDefaultFontSetClass",value:function(t){return this._defaultFontSetClass=t,this}},{key:"getDefaultFontSetClass",value:function(){return this._defaultFontSetClass}},{key:"getSvgIconFromUrl",value:function(t){var e=this,n=this._sanitizer.sanitize(Cr.RESOURCE_URL,t);if(!n)throw IS(t);var i=this._cachedIconsByUrl.get(n);return i?pg(NS(i)):this._loadSvgIconFromConfig(new FS(t)).pipe(Cv((function(t){return e._cachedIconsByUrl.set(n,t)})),nt((function(t){return NS(t)})))}},{key:"getNamedSvgIcon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=HS(e,t),i=this._svgIconConfigs.get(n);if(i)return this._getSvgFromConfig(i);var r=this._iconSetConfigs.get(e);return r?this._getSvgFromIconSetConfigs(t,r):jb(AS(n))}},{key:"ngOnDestroy",value:function(){this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}},{key:"_getSvgFromConfig",value:function(t){return t.svgElement?pg(NS(t.svgElement)):this._loadSvgIconFromConfig(t).pipe(Cv((function(e){return t.svgElement=e})),nt((function(t){return NS(t)})))}},{key:"_getSvgFromIconSetConfigs",value:function(t,e){var n=this,i=this._extractIconWithNameFromAnySet(t,e);return i?pg(i):ES(e.filter((function(t){return!t.svgElement})).map((function(t){return n._loadSvgIconSetFromConfig(t).pipe(yv((function(e){var i=n._sanitizer.sanitize(Cr.RESOURCE_URL,t.url),r="Loading icon set URL: ".concat(i," failed: ").concat(e.message);return n._errorHandler.handleError(new Error(r)),pg(null)})))}))).pipe(nt((function(){var i=n._extractIconWithNameFromAnySet(t,e);if(!i)throw AS(t);return i})))}},{key:"_extractIconWithNameFromAnySet",value:function(t,e){for(var n=e.length-1;n>=0;n--){var i=e[n];if(i.svgElement){var r=this._extractSvgIconFromSet(i.svgElement,t,i.options);if(r)return r}}return null}},{key:"_loadSvgIconFromConfig",value:function(t){var e=this;return this._fetchIcon(t).pipe(nt((function(n){return e._createSvgElementForSingleIcon(n,t.options)})))}},{key:"_loadSvgIconSetFromConfig",value:function(t){var e=this;return t.svgElement?pg(t.svgElement):this._fetchIcon(t).pipe(nt((function(n){return t.svgElement||(t.svgElement=e._svgElementFromString(n)),t.svgElement})))}},{key:"_createSvgElementForSingleIcon",value:function(t,e){var n=this._svgElementFromString(t);return this._setSvgAttributes(n,e),n}},{key:"_extractSvgIconFromSet",value:function(t,e,n){var i=t.querySelector('[id="'.concat(e,'"]'));if(!i)return null;var r=i.cloneNode(!0);if(r.removeAttribute("id"),"svg"===r.nodeName.toLowerCase())return this._setSvgAttributes(r,n);if("symbol"===r.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(r),n);var a=this._svgElementFromString("");return a.appendChild(r),this._setSvgAttributes(a,n)}},{key:"_svgElementFromString",value:function(t){var e=this._document.createElement("DIV");e.innerHTML=t;var n=e.querySelector("svg");if(!n)throw Error(" tag not found");return n}},{key:"_toSvgElement",value:function(t){for(var e=this._svgElementFromString(""),n=t.attributes,i=0;i5&&void 0!==arguments[5])||arguments[5],s=arguments.length>6&&void 0!==arguments[6]&&arguments[6];_(this,t),this.store=e,this.currentLoader=n,this.compiler=i,this.parser=r,this.missingTranslationHandler=a,this.useDefaultLang=o,this.isolate=s,this.pending=!1,this._onTranslationChange=new Ou,this._onLangChange=new Ou,this._onDefaultLangChange=new Ou,this._langs=[],this._translations={},this._translationRequests={}}return b(t,[{key:"setDefaultLang",value:function(t){var e=this;if(t!==this.defaultLang){var n=this.retrieveTranslations(t);void 0!==n?(this.defaultLang||(this.defaultLang=t),n.pipe(wv(1)).subscribe((function(n){e.changeDefaultLang(t)}))):this.changeDefaultLang(t)}}},{key:"getDefaultLang",value:function(){return this.defaultLang}},{key:"use",value:function(t){var e=this;if(t===this.currentLang)return pg(this.translations[t]);var n=this.retrieveTranslations(t);return void 0!==n?(this.currentLang||(this.currentLang=t),n.pipe(wv(1)).subscribe((function(n){e.changeLang(t)})),n):(this.changeLang(t),pg(this.translations[t]))}},{key:"retrieveTranslations",value:function(t){var e;return void 0===this.translations[t]&&(this._translationRequests[t]=this._translationRequests[t]||this.getTranslation(t),e=this._translationRequests[t]),e}},{key:"getTranslation",value:function(t){var e=this;return this.pending=!0,this.loadingTranslations=this.currentLoader.getTranslation(t).pipe(kt()),this.loadingTranslations.pipe(wv(1)).subscribe((function(n){e.translations[t]=e.compiler.compileTranslations(n,t),e.updateLangs(),e.pending=!1}),(function(t){e.pending=!1})),this.loadingTranslations}},{key:"setTranslation",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];e=this.compiler.compileTranslations(e,t),this.translations[t]=n&&this.translations[t]?ax(this.translations[t],e):e,this.updateLangs(),this.onTranslationChange.emit({lang:t,translations:this.translations[t]})}},{key:"getLangs",value:function(){return this.langs}},{key:"addLangs",value:function(t){var e=this;t.forEach((function(t){-1===e.langs.indexOf(t)&&e.langs.push(t)}))}},{key:"updateLangs",value:function(){this.addLangs(Object.keys(this.translations))}},{key:"getParsedResult",value:function(t,e,n){var i;if(e instanceof Array){var r,a={},o=!1,s=d(e);try{for(s.s();!(r=s.n()).done;){var l=r.value;a[l]=this.getParsedResult(t,l,n),"function"==typeof a[l].subscribe&&(o=!0)}}catch(g){s.e(g)}finally{s.f()}if(o){var u,c,h=d(e);try{for(h.s();!(c=h.n()).done;){var f=c.value,p="function"==typeof a[f].subscribe?a[f]:pg(a[f]);u=void 0===u?p:ft(u,p)}}catch(g){h.e(g)}finally{h.f()}return u.pipe(function(t,e){return arguments.length>=2?function(n){return R(Fv(t,e),uv(1),gv(e))(n)}:function(e){return R(Fv((function(e,n,i){return t(e,n,i+1)})),uv(1))(e)}}(GS,[]),nt((function(t){var n={};return t.forEach((function(t,i){n[e[i]]=t})),n})))}return a}if(t&&(i=this.parser.interpolate(this.parser.getValue(t,e),n)),void 0===i&&this.defaultLang&&this.defaultLang!==this.currentLang&&this.useDefaultLang&&(i=this.parser.interpolate(this.parser.getValue(this.translations[this.defaultLang],e),n)),void 0===i){var m={key:e,translateService:this};void 0!==n&&(m.interpolateParams=n),i=this.missingTranslationHandler.handle(m)}return void 0!==i?i:e}},{key:"get",value:function(t,e){var n=this;if(!ix(t)||!t.length)throw new Error('Parameter "key" required');if(this.pending)return H.create((function(i){var r=function(t){i.next(t),i.complete()},a=function(t){i.error(t)};n.loadingTranslations.subscribe((function(i){"function"==typeof(i=n.getParsedResult(n.compiler.compileTranslations(i,n.currentLang),t,e)).subscribe?i.subscribe(r,a):r(i)}),a)}));var i=this.getParsedResult(this.translations[this.currentLang],t,e);return"function"==typeof i.subscribe?i:pg(i)}},{key:"stream",value:function(t,e){var n=this;if(!ix(t)||!t.length)throw new Error('Parameter "key" required');return Iv(this.get(t,e),this.onLangChange.pipe(Pv((function(i){var r=n.getParsedResult(i.translations,t,e);return"function"==typeof r.subscribe?r:pg(r)}))))}},{key:"instant",value:function(t,e){if(!ix(t)||!t.length)throw new Error('Parameter "key" required');var n=this.getParsedResult(this.translations[this.currentLang],t,e);if(void 0!==n.subscribe){if(t instanceof Array){var i={};return t.forEach((function(e,n){i[t[n]]=t[n]})),i}return t}return n}},{key:"set",value:function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.currentLang;this.translations[n][t]=this.compiler.compile(e,n),this.updateLangs(),this.onTranslationChange.emit({lang:n,translations:this.translations[n]})}},{key:"changeLang",value:function(t){this.currentLang=t,this.onLangChange.emit({lang:t,translations:this.translations[t]}),this.defaultLang||this.changeDefaultLang(t)}},{key:"changeDefaultLang",value:function(t){this.defaultLang=t,this.onDefaultLangChange.emit({lang:t,translations:this.translations[t]})}},{key:"reloadLang",value:function(t){return this.resetLang(t),this.getTranslation(t)}},{key:"resetLang",value:function(t){this._translationRequests[t]=void 0,this.translations[t]=void 0}},{key:"getBrowserLang",value:function(){if("undefined"!=typeof window&&void 0!==window.navigator){var t=window.navigator.languages?window.navigator.languages[0]:null;return-1!==(t=t||window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage).indexOf("-")&&(t=t.split("-")[0]),-1!==t.indexOf("_")&&(t=t.split("_")[0]),t}}},{key:"getBrowserCultureLang",value:function(){if("undefined"!=typeof window&&void 0!==window.navigator)return(window.navigator.languages?window.navigator.languages[0]:null)||window.navigator.language||window.navigator.browserLanguage||window.navigator.userLanguage}},{key:"onTranslationChange",get:function(){return this.isolate?this._onTranslationChange:this.store.onTranslationChange}},{key:"onLangChange",get:function(){return this.isolate?this._onLangChange:this.store.onLangChange}},{key:"onDefaultLangChange",get:function(){return this.isolate?this._onDefaultLangChange:this.store.onDefaultLangChange}},{key:"defaultLang",get:function(){return this.isolate?this._defaultLang:this.store.defaultLang},set:function(t){this.isolate?this._defaultLang=t:this.store.defaultLang=t}},{key:"currentLang",get:function(){return this.isolate?this._currentLang:this.store.currentLang},set:function(t){this.isolate?this._currentLang=t:this.store.currentLang=t}},{key:"langs",get:function(){return this.isolate?this._langs:this.store.langs},set:function(t){this.isolate?this._langs=t:this.store.langs=t}},{key:"translations",get:function(){return this.isolate?this._translations:this.store.translations},set:function(t){this.isolate?this._translations=t:this.store.translations=t}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(ux),ge(KS),ge(XS),ge(ox),ge($S),ge(dx),ge(cx))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),fx=function(){var t=function(){function t(e,n,i){var r=this;_(this,t),this.translateService=e,this.element=n,this._ref=i,this.onTranslationChangeSub||(this.onTranslationChangeSub=this.translateService.onTranslationChange.subscribe((function(t){t.lang===r.translateService.currentLang&&r.checkNodes(!0,t.translations)}))),this.onLangChangeSub||(this.onLangChangeSub=this.translateService.onLangChange.subscribe((function(t){r.checkNodes(!0,t.translations)}))),this.onDefaultLangChangeSub||(this.onDefaultLangChangeSub=this.translateService.onDefaultLangChange.subscribe((function(t){r.checkNodes(!0)})))}return b(t,[{key:"ngAfterViewChecked",value:function(){this.checkNodes()}},{key:"checkNodes",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=arguments.length>1?arguments[1]:void 0,n=this.element.nativeElement.childNodes;n.length||(this.setContent(this.element.nativeElement,this.key),n=this.element.nativeElement.childNodes);for(var i=0;i1?i-1:0),a=1;a0&&void 0!==arguments[0]?arguments[0]:{};return{ngModule:t,providers:[e.loader||{provide:KS,useClass:JS},e.compiler||{provide:XS,useClass:tx},e.parser||{provide:ox,useClass:sx},e.missingTranslationHandler||{provide:$S,useClass:QS},ux,{provide:cx,useValue:e.isolate},{provide:dx,useValue:e.useDefaultLang},hx]}}},{key:"forChild",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{ngModule:t,providers:[e.loader||{provide:KS,useClass:JS},e.compiler||{provide:XS,useClass:tx},e.parser||{provide:ox,useClass:sx},e.missingTranslationHandler||{provide:$S,useClass:QS},{provide:cx,useValue:e.isolate},{provide:dx,useValue:e.useDefaultLang},hx]}}}]),t}();return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}();function gx(t,e){if(1&t&&(ls(0,"div",4),ls(1,"mat-icon"),rl(2),us(),us()),2&t){var n=Ms();Gr(2),al(n.config.icon)}}function vx(t,e){if(1&t&&(ls(0,"div",5),rl(1),Du(2,"translate"),Du(3,"translate"),us()),2&t){var n=Ms();Gr(1),sl(" ",Lu(2,2,"common.error")," ",Tu(3,4,n.config.smallText,n.config.smallTextTranslationParams)," ")}}var _x=function(t){return t.Error="error",t.Done="done",t.Warning="warning",t}({}),yx=function(t){return t.Red="red-background",t.Green="green-background",t.Yellow="yellow-background",t}({}),bx=function(){function t(t,e){this.snackbarRef=e,this.config=t}return t.prototype.close=function(){this.snackbarRef.dismiss()},t.\u0275fac=function(e){return new(e||t)(rs(bS),rs(MS))},t.\u0275cmp=Fe({type:t,selectors:[["app-snack-bar"]],decls:8,vars:8,consts:[["class","icon-container",4,"ngIf"],[1,"text-container"],["class","second-line",4,"ngIf"],[1,"close-button",3,"click"],[1,"icon-container"],[1,"second-line"]],template:function(t,e){1&t&&(ls(0,"div"),ns(1,gx,3,1,"div",0),ls(2,"div",1),rl(3),Du(4,"translate"),ns(5,vx,4,7,"div",2),us(),ls(6,"mat-icon",3),vs("click",(function(){return e.close()})),rl(7,"close"),us(),us()),2&t&&(Us("main-container "+e.config.color),Gr(1),os("ngIf",e.config.icon),Gr(2),ol(" ",Tu(4,5,e.config.text,e.config.textTranslationParams)," "),Gr(2),os("ngIf",e.config.smallText))},directives:[wh,US],pipes:[px],styles:['.close-button[_ngcontent-%COMP%], .cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:auto!important;-webkit-user-select:initial!important;-moz-user-select:initial!important;-ms-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media (max-width:767px),(min-width:992px) and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media (max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.main-container[_ngcontent-%COMP%]{width:100%;display:flex;color:#fff;padding:15px}.red-background[_ngcontent-%COMP%]{background-color:#ea0606}.green-background[_ngcontent-%COMP%]{background-color:#1fb11f}.yellow-background[_ngcontent-%COMP%]{background-color:#f90}.icon-container[_ngcontent-%COMP%]{margin-right:15px}.text-container[_ngcontent-%COMP%]{flex-grow:1;margin-right:10px;font-size:1rem;margin-top:2px;word-break:break-word}.text-container[_ngcontent-%COMP%] .second-line[_ngcontent-%COMP%]{font-size:.8rem}.close-button[_ngcontent-%COMP%]{opacity:.7}.close-button[_ngcontent-%COMP%]:hover{opacity:1}mat-icon[_ngcontent-%COMP%]{position:relative;top:3px}']}),t}(),kx=function(t){return t.NoConnection="NoConnection",t.Unknown="Unknown",t}({}),wx=function(){return function(){}}();function Mx(t){if(t&&t.type&&!t.srcElement)return t;var e=new wx;return e.originalError=t,t&&"string"!=typeof t?(e.originalServerErrorMsg=function(t){if(t){if("string"==typeof t._body)return t._body;if(t.originalServerErrorMsg&&"string"==typeof t.originalServerErrorMsg)return t.originalServerErrorMsg;if(t.error&&"string"==typeof t.error)return t.error;if(t.error&&t.error.error&&t.error.error.message)return t.error.error.message;if(t.error&&t.error.error&&"string"==typeof t.error.error)return t.error.error;if(t.message)return t.message;if(t._body&&t._body.error)return t._body.error;try{return JSON.parse(t._body).error}catch(e){}}return null}(t),null!=t.status&&(0!==t.status&&504!==t.status||(e.type=kx.NoConnection,e.translatableErrorMsg="common.no-connection-error")),e.type||(e.type=kx.Unknown,e.translatableErrorMsg=e.originalServerErrorMsg?function(t){if(!t||0===t.length)return t;if(-1!==t.indexOf('"error":'))try{t=JSON.parse(t).error}catch(i){}if(t.startsWith("400")||t.startsWith("403")){var e=t.split(" - ",2);t=2===e.length?e[1]:t}var n=(t=t.trim()).substr(0,1);return n.toUpperCase()!==n&&(t=n.toUpperCase()+t.substr(1,t.length-1)),t.endsWith(".")||t.endsWith(",")||t.endsWith(":")||t.endsWith(";")||t.endsWith("?")||t.endsWith("!")||(t+="."),t}(e.originalServerErrorMsg):"common.operation-error"),e):(e.originalServerErrorMsg=t||"",e.translatableErrorMsg=t||"common.operation-error",e.type=kx.Unknown,e)}var Sx=function(){function t(t){this.snackBar=t,this.lastWasTemporaryError=!1}return t.prototype.showError=function(t,e,n,i,r){void 0===e&&(e=null),void 0===n&&(n=!1),void 0===i&&(i=null),void 0===r&&(r=null),t=Mx(t),i=i?Mx(i):null,this.lastWasTemporaryError=n,this.show(t.translatableErrorMsg,e,i?i.translatableErrorMsg:null,r,_x.Error,yx.Red,15e3)},t.prototype.showWarning=function(t,e){void 0===e&&(e=null),this.lastWasTemporaryError=!1,this.show(t,e,null,null,_x.Warning,yx.Yellow,15e3)},t.prototype.showDone=function(t,e){void 0===e&&(e=null),this.lastWasTemporaryError=!1,this.show(t,e,null,null,_x.Done,yx.Green,5e3)},t.prototype.closeCurrent=function(){this.snackBar.dismiss()},t.prototype.closeCurrentIfTemporaryError=function(){this.lastWasTemporaryError&&this.snackBar.dismiss()},t.prototype.show=function(t,e,n,i,r,a,o){this.snackBar.openFromComponent(bx,{duration:o,panelClass:"p-0",data:{text:t,textTranslationParams:e,smallText:n,smallTextTranslationParams:i,icon:r,color:a}})},t.\u0275prov=Ot({token:t,factory:t.\u0275fac=function(e){return new(e||t)(ge(TS))},providedIn:"root"}),t}(),xx={maxShortListElements:5,maxFullListElements:40,connectionRetryDelay:5e3,languages:[{code:"en",name:"English",iconName:"en.png"},{code:"es",name:"Espa\xf1ol",iconName:"es.png"},{code:"de",name:"Deutsch",iconName:"de.png"}],defaultLanguage:"en",smallModalWidth:"480px",mediumModalWidth:"640px",largeModalWidth:"900px"},Cx=function(){return function(t){Object.assign(this,t)}}(),Dx=function(){function t(t){this.translate=t,this.currentLanguage=new Ub(1),this.languages=new Ub(1),this.storageKey="lang",this.languagesInternal=[],this.settingsLoaded=!1}return t.prototype.loadLanguageSettings=function(){var t=this;if(!this.settingsLoaded){this.settingsLoaded=!0;var e=[];xx.languages.forEach((function(n){var i=new Cx(n);t.languagesInternal.push(i),e.push(i.code)})),this.languages.next(this.languagesInternal),this.translate.addLangs(e),this.translate.setDefaultLang(xx.defaultLanguage),this.translate.onLangChange.subscribe((function(e){return t.onLanguageChanged(e)})),this.loadCurrentLanguage()}},t.prototype.changeLanguage=function(t){this.translate.use(t)},t.prototype.onLanguageChanged=function(t){this.currentLanguage.next(this.languagesInternal.find((function(e){return e.code===t.lang}))),localStorage.setItem(this.storageKey,t.lang)},t.prototype.loadCurrentLanguage=function(){var t=this,e=localStorage.getItem(this.storageKey);e=e||xx.defaultLanguage,setTimeout((function(){t.translate.use(e)}),16)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac=function(e){return new(e||t)(ge(hx))},providedIn:"root"}),t}();function Lx(t,e){}var Tx=function t(){_(this,t),this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.autoFocus=!0,this.restoreFocus=!0,this.closeOnNavigation=!0},Ex={dialogContainer:jf("dialogContainer",[Uf("void, exit",Wf({opacity:0,transform:"scale(0.7)"})),Uf("enter",Wf({transform:"none"})),Gf("* => enter",Bf("150ms cubic-bezier(0, 0, 0.2, 1)",Wf({transform:"none",opacity:1}))),Gf("* => void, * => exit",Bf("75ms cubic-bezier(0.4, 0.0, 0.2, 1)",Wf({opacity:0})))])};function Px(){throw Error("Attempting to attach dialog content after content is already attached")}var Ox=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s){var l;return _(this,n),(l=e.call(this))._elementRef=t,l._focusTrapFactory=i,l._changeDetectorRef=r,l._config=o,l._focusMonitor=s,l._elementFocusedBeforeDialogWasOpened=null,l._closeInteractionType=null,l._state="enter",l._animationStateChanged=new Ou,l.attachDomPortal=function(t){return l._portalOutlet.hasAttached()&&Px(),l._setupFocusTrap(),l._portalOutlet.attachDomPortal(t)},l._ariaLabelledBy=o.ariaLabelledBy||null,l._document=a,l}return b(n,[{key:"attachComponentPortal",value:function(t){return this._portalOutlet.hasAttached()&&Px(),this._setupFocusTrap(),this._portalOutlet.attachComponentPortal(t)}},{key:"attachTemplatePortal",value:function(t){return this._portalOutlet.hasAttached()&&Px(),this._setupFocusTrap(),this._portalOutlet.attachTemplatePortal(t)}},{key:"_recaptureFocus",value:function(){this._containsFocus()||(!this._config.autoFocus||!this._focusTrap.focusInitialElement())&&this._elementRef.nativeElement.focus()}},{key:"_trapFocus",value:function(){this._config.autoFocus?this._focusTrap.focusInitialElementWhenReady():this._containsFocus()||this._elementRef.nativeElement.focus()}},{key:"_restoreFocus",value:function(){var t=this._elementFocusedBeforeDialogWasOpened;if(this._config.restoreFocus&&t&&"function"==typeof t.focus){var e=this._document.activeElement,n=this._elementRef.nativeElement;e&&e!==this._document.body&&e!==n&&!n.contains(e)||(this._focusMonitor?(this._focusMonitor.focusVia(t,this._closeInteractionType),this._closeInteractionType=null):t.focus())}this._focusTrap&&this._focusTrap.destroy()}},{key:"_setupFocusTrap",value:function(){var t=this;this._focusTrap||(this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement)),this._document&&(this._elementFocusedBeforeDialogWasOpened=this._document.activeElement,this._elementRef.nativeElement.focus&&Promise.resolve().then((function(){return t._elementRef.nativeElement.focus()})))}},{key:"_containsFocus",value:function(){var t=this._elementRef.nativeElement,e=this._document.activeElement;return t===e||t.contains(e)}},{key:"_onAnimationDone",value:function(t){"enter"===t.toState?this._trapFocus():"exit"===t.toState&&this._restoreFocus(),this._animationStateChanged.emit(t)}},{key:"_onAnimationStart",value:function(t){this._animationStateChanged.emit(t)}},{key:"_startExitAnimation",value:function(){this._state="exit",this._changeDetectorRef.markForCheck()}}]),n}(Jk);return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(rM),rs(xo),rs(id,8),rs(Tx),rs(dM))},t.\u0275cmp=Fe({type:t,selectors:[["mat-dialog-container"]],viewQuery:function(t,e){var n;1&t&&Wu(Qk,!0),2&t&&zu(n=Zu())&&(e._portalOutlet=n.first)},hostAttrs:["tabindex","-1","aria-modal","true",1,"mat-dialog-container"],hostVars:6,hostBindings:function(t,e){1&t&&_s("@dialogContainer.start",(function(t){return e._onAnimationStart(t)}))("@dialogContainer.done",(function(t){return e._onAnimationDone(t)})),2&t&&(ts("id",e._id)("role",e._config.role)("aria-labelledby",e._config.ariaLabel?null:e._ariaLabelledBy)("aria-label",e._config.ariaLabel)("aria-describedby",e._config.ariaDescribedBy||null),dl("@dialogContainer",e._state))},features:[fl],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(t,e){1&t&&ns(0,Lx,0,0,"ng-template",0)},directives:[Qk],styles:[".mat-dialog-container{display:block;padding:24px;border-radius:4px;box-sizing:border-box;overflow:auto;outline:0;width:100%;height:100%;min-height:inherit;max-height:inherit}.cdk-high-contrast-active .mat-dialog-container{outline:solid 1px}.mat-dialog-content{display:block;margin:0 -24px;padding:0 24px;max-height:65vh;overflow:auto;-webkit-overflow-scrolling:touch}.mat-dialog-title{margin:0 0 20px;display:block}.mat-dialog-actions{padding:8px 0;display:flex;flex-wrap:wrap;min-height:52px;align-items:center;margin-bottom:-24px}.mat-dialog-actions[align=end]{justify-content:flex-end}.mat-dialog-actions[align=center]{justify-content:center}.mat-dialog-actions .mat-button-base+.mat-button-base,.mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}\n"],encapsulation:2,data:{animation:[Ex.dialogContainer]}}),t}(),Ax=0,Ix=function(){function t(e,n){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mat-dialog-".concat(Ax++);_(this,t),this._overlayRef=e,this._containerInstance=n,this.id=r,this.disableClose=this._containerInstance._config.disableClose,this._afterOpened=new W,this._afterClosed=new W,this._beforeClosed=new W,this._state=0,n._id=r,n._animationStateChanged.pipe(gg((function(t){return"done"===t.phaseName&&"enter"===t.toState})),wv(1)).subscribe((function(){i._afterOpened.next(),i._afterOpened.complete()})),n._animationStateChanged.pipe(gg((function(t){return"done"===t.phaseName&&"exit"===t.toState})),wv(1)).subscribe((function(){clearTimeout(i._closeFallbackTimeout),i._finishDialogClose()})),e.detachments().subscribe((function(){i._beforeClosed.next(i._result),i._beforeClosed.complete(),i._afterClosed.next(i._result),i._afterClosed.complete(),i.componentInstance=null,i._overlayRef.dispose()})),e.keydownEvents().pipe(gg((function(t){return 27===t.keyCode&&!i.disableClose&&!iw(t)}))).subscribe((function(t){t.preventDefault(),Yx(i,"keyboard")})),e.backdropClick().subscribe((function(){i.disableClose?i._containerInstance._recaptureFocus():Yx(i,"mouse")}))}return b(t,[{key:"close",value:function(t){var e=this;this._result=t,this._containerInstance._animationStateChanged.pipe(gg((function(t){return"start"===t.phaseName})),wv(1)).subscribe((function(n){e._beforeClosed.next(t),e._beforeClosed.complete(),e._overlayRef.detachBackdrop(),e._closeFallbackTimeout=setTimeout((function(){return e._finishDialogClose()}),n.totalTime+100)})),this._containerInstance._startExitAnimation(),this._state=1}},{key:"afterOpened",value:function(){return this._afterOpened.asObservable()}},{key:"afterClosed",value:function(){return this._afterClosed.asObservable()}},{key:"beforeClosed",value:function(){return this._beforeClosed.asObservable()}},{key:"backdropClick",value:function(){return this._overlayRef.backdropClick()}},{key:"keydownEvents",value:function(){return this._overlayRef.keydownEvents()}},{key:"updatePosition",value:function(t){var e=this._getPositionStrategy();return t&&(t.left||t.right)?t.left?e.left(t.left):e.right(t.right):e.centerHorizontally(),t&&(t.top||t.bottom)?t.top?e.top(t.top):e.bottom(t.bottom):e.centerVertically(),this._overlayRef.updatePosition(),this}},{key:"updateSize",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return this._getPositionStrategy().width(t).height(e),this._overlayRef.updatePosition(),this}},{key:"addPanelClass",value:function(t){return this._overlayRef.addPanelClass(t),this}},{key:"removePanelClass",value:function(t){return this._overlayRef.removePanelClass(t),this}},{key:"getState",value:function(){return this._state}},{key:"_finishDialogClose",value:function(){this._state=2,this._overlayRef.dispose()}},{key:"_getPositionStrategy",value:function(){return this._overlayRef.getConfig().positionStrategy}}]),t}();function Yx(t,e,n){return void 0!==t._containerInstance&&(t._containerInstance._closeInteractionType=e),t.close(n)}var Fx=new se("MatDialogData"),Rx=new se("mat-dialog-default-options"),Nx=new se("mat-dialog-scroll-strategy"),Hx={provide:Nx,deps:[Pw],useFactory:function(t){return function(){return t.scrollStrategies.block()}}},jx=function(){var t=function(){function t(e,n,i,r,a,o,s){var l=this;_(this,t),this._overlay=e,this._injector=n,this._defaultOptions=r,this._parentDialog=o,this._overlayContainer=s,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new W,this._afterOpenedAtThisLevel=new W,this._ariaHiddenElements=new Map,this.afterAllClosed=ov((function(){return l.openDialogs.length?l._afterAllClosed:l._afterAllClosed.pipe(Yv(void 0))})),this._scrollStrategy=a}return b(t,[{key:"open",value:function(t,e){var n=this;if((e=function(t,e){return Object.assign(Object.assign({},e),t)}(e,this._defaultOptions||new Tx)).id&&this.getDialogById(e.id))throw Error('Dialog with id "'.concat(e.id,'" exists already. The dialog id must be unique.'));var i=this._createOverlay(e),r=this._attachDialogContainer(i,e),a=this._attachDialogContent(t,r,i,e);return this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(a),a.afterClosed().subscribe((function(){return n._removeOpenDialog(a)})),this.afterOpened.next(a),a}},{key:"closeAll",value:function(){this._closeDialogs(this.openDialogs)}},{key:"getDialogById",value:function(t){return this.openDialogs.find((function(e){return e.id===t}))}},{key:"ngOnDestroy",value:function(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}},{key:"_createOverlay",value:function(t){var e=this._getOverlayConfig(t);return this._overlay.create(e)}},{key:"_getOverlayConfig",value:function(t){var e=new hw({positionStrategy:this._overlay.position().global(),scrollStrategy:t.scrollStrategy||this._scrollStrategy(),panelClass:t.panelClass,hasBackdrop:t.hasBackdrop,direction:t.direction,minWidth:t.minWidth,minHeight:t.minHeight,maxWidth:t.maxWidth,maxHeight:t.maxHeight,disposeOnNavigation:t.closeOnNavigation});return t.backdropClass&&(e.backdropClass=t.backdropClass),e}},{key:"_attachDialogContainer",value:function(t,e){var n=zo.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:Tx,useValue:e}]}),i=new qk(Ox,e.viewContainerRef,n,e.componentFactoryResolver);return t.attach(i).instance}},{key:"_attachDialogContent",value:function(t,e,n,i){var r=new Ix(n,e,i.id);if(t instanceof eu)e.attachTemplatePortal(new Gk(t,null,{$implicit:i.data,dialogRef:r}));else{var a=this._createInjector(i,r,e),o=e.attachComponentPortal(new qk(t,i.viewContainerRef,a));r.componentInstance=o.instance}return r.updateSize(i.width,i.height).updatePosition(i.position),r}},{key:"_createInjector",value:function(t,e,n){var i=t&&t.viewContainerRef&&t.viewContainerRef.injector,r=[{provide:Ox,useValue:n},{provide:Fx,useValue:t.data},{provide:Ix,useValue:e}];return!t.direction||i&&i.get(Yk,null)||r.push({provide:Yk,useValue:{value:t.direction,change:pg()}}),zo.create({parent:i||this._injector,providers:r})}},{key:"_removeOpenDialog",value:function(t){var e=this.openDialogs.indexOf(t);e>-1&&(this.openDialogs.splice(e,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((function(t,e){t?e.setAttribute("aria-hidden",t):e.removeAttribute("aria-hidden")})),this._ariaHiddenElements.clear(),this._afterAllClosed.next()))}},{key:"_hideNonDialogContentFromAssistiveTechnology",value:function(){var t=this._overlayContainer.getContainerElement();if(t.parentElement)for(var e=t.parentElement.children,n=e.length-1;n>-1;n--){var i=e[n];i===t||"SCRIPT"===i.nodeName||"STYLE"===i.nodeName||i.hasAttribute("aria-live")||(this._ariaHiddenElements.set(i,i.getAttribute("aria-hidden")),i.setAttribute("aria-hidden","true"))}}},{key:"_closeDialogs",value:function(t){for(var e=t.length;e--;)t[e].close()}},{key:"openDialogs",get:function(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}},{key:"afterOpened",get:function(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}},{key:"_afterAllClosed",get:function(){var t=this._parentDialog;return t?t._afterAllClosed:this._afterAllClosedAtThisLevel}}]),t}();return t.\u0275fac=function(e){return new(e||t)(ge(Pw),ge(zo),ge(_d,8),ge(Rx,8),ge(Nx),ge(t,12),ge(kw))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),Bx=0,Vx=function(){var t=function(){function t(e,n,i){_(this,t),this.dialogRef=e,this._elementRef=n,this._dialog=i,this.type="button"}return b(t,[{key:"ngOnInit",value:function(){this.dialogRef||(this.dialogRef=qx(this._elementRef,this._dialog.openDialogs))}},{key:"ngOnChanges",value:function(t){var e=t._matDialogClose||t._matDialogCloseResult;e&&(this.dialogResult=e.currentValue)}},{key:"_onButtonClick",value:function(t){Yx(this.dialogRef,0===t.screenX&&0===t.screenY?"keyboard":"mouse",this.dialogResult)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Ix,8),rs(Pl),rs(jx))},t.\u0275dir=Ve({type:t,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(t,e){1&t&&vs("click",(function(t){return e._onButtonClick(t)})),2&t&&ts("aria-label",e.ariaLabel||null)("type",e.type)},inputs:{type:"type",dialogResult:["mat-dialog-close","dialogResult"],ariaLabel:["aria-label","ariaLabel"],_matDialogClose:["matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[en]}),t}(),zx=function(){var t=function(){function t(e,n,i){_(this,t),this._dialogRef=e,this._elementRef=n,this._dialog=i,this.id="mat-dialog-title-".concat(Bx++)}return b(t,[{key:"ngOnInit",value:function(){var t=this;this._dialogRef||(this._dialogRef=qx(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then((function(){var e=t._dialogRef._containerInstance;e&&!e._ariaLabelledBy&&(e._ariaLabelledBy=t.id)}))}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Ix,8),rs(Pl),rs(jx))},t.\u0275dir=Ve({type:t,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-dialog-title"],hostVars:1,hostBindings:function(t,e){2&t&&cl("id",e.id)},inputs:{id:"id"},exportAs:["matDialogTitle"]}),t}(),Wx=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-dialog-content"]}),t}(),Ux=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-dialog-actions"]}),t}();function qx(t,e){for(var n=t.nativeElement.parentElement;n&&!n.classList.contains("mat-dialog-container");)n=n.parentElement;return n?e.find((function(t){return t.id===n.id})):null}var Gx=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[jx,Hx],imports:[[Rw,ew,MM],MM]}),t}(),Kx=function(){function t(t,e,n,i,r,a){r.afterOpened.subscribe((function(){return i.closeCurrent()})),n.events.subscribe((function(t){t instanceof Wv&&(i.closeCurrent(),r.closeAll(),window.scrollTo(0,0))})),r.afterAllClosed.subscribe((function(){return i.closeCurrentIfTemporaryError()})),a.loadLanguageSettings()}return t.\u0275fac=function(e){return new(e||t)(rs(Kb),rs(_d),rs(ub),rs(Sx),rs(jx),rs(Dx))},t.\u0275cmp=Fe({type:t,selectors:[["app-root"]],decls:2,vars:0,consts:[[1,"flex-1","content","container-fluid"]],template:function(t,e){1&t&&(ls(0,"div",0),cs(1,"router-outlet"),us())},directives:[mb],styles:["[_nghost-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;min-height:100%;height:100%}.content[_ngcontent-%COMP%]{padding:20px!important}"]}),t}(),Jx={url:"",deserializer:function(t){return JSON.parse(t.data)},serializer:function(t){return JSON.stringify(t)}},Zx=function(t){f(n,t);var e=v(n);function n(t,i){var r;if(_(this,n),r=e.call(this),t instanceof H)r.destination=i,r.source=t;else{var a=r._config=Object.assign({},Jx);if(r._output=new W,"string"==typeof t)a.url=t;else for(var o in t)t.hasOwnProperty(o)&&(a[o]=t[o]);if(!a.WebSocketCtor&&WebSocket)a.WebSocketCtor=WebSocket;else if(!a.WebSocketCtor)throw new Error("no WebSocket constructor can be found");r.destination=new Ub}return r}return b(n,[{key:"lift",value:function(t){var e=new n(this._config,this.destination);return e.operator=t,e.source=this,e}},{key:"_resetState",value:function(){this._socket=null,this.source||(this.destination=new Ub),this._output=new W}},{key:"multiplex",value:function(t,e,n){var i=this;return new H((function(r){try{i.next(t())}catch(o){r.error(o)}var a=i.subscribe((function(t){try{n(t)&&r.next(t)}catch(o){r.error(o)}}),(function(t){return r.error(t)}),(function(){return r.complete()}));return function(){try{i.next(e())}catch(o){r.error(o)}a.unsubscribe()}}))}},{key:"_connectSocket",value:function(){var t=this,e=this._config,n=e.WebSocketCtor,i=e.protocol,r=e.url,a=e.binaryType,o=this._output,s=null;try{s=i?new n(r,i):new n(r),this._socket=s,a&&(this._socket.binaryType=a)}catch(u){return void o.error(u)}var l=new C((function(){t._socket=null,s&&1===s.readyState&&s.close()}));s.onopen=function(e){if(!t._socket)return s.close(),void t._resetState();var n=t._config.openObserver;n&&n.next(e);var i=t.destination;t.destination=A.create((function(n){if(1===s.readyState)try{s.send((0,t._config.serializer)(n))}catch(e){t.destination.error(e)}}),(function(e){var n=t._config.closingObserver;n&&n.next(void 0),e&&e.code?s.close(e.code,e.reason):o.error(new TypeError("WebSocketSubject.error must be called with an object with an error code, and an optional reason: { code: number, reason: string }")),t._resetState()}),(function(){var e=t._config.closingObserver;e&&e.next(void 0),s.close(),t._resetState()})),i&&i instanceof Ub&&l.add(i.subscribe(t.destination))},s.onerror=function(e){t._resetState(),o.error(e)},s.onclose=function(e){t._resetState();var n=t._config.closeObserver;n&&n.next(e),e.wasClean?o.complete():o.error(e)},s.onmessage=function(e){try{o.next((0,t._config.deserializer)(e))}catch(n){o.error(n)}}}},{key:"_subscribe",value:function(t){var e=this,n=this.source;return n?n.subscribe(t):(this._socket||this._connectSocket(),this._output.subscribe(t),t.add((function(){var t=e._socket;0===e._output.observers.length&&(t&&1===t.readyState&&t.close(),e._resetState())})),t)}},{key:"unsubscribe",value:function(){var t=this._socket;t&&1===t.readyState&&t.close(),this._resetState(),r(i(n.prototype),"unsubscribe",this).call(this)}}]),n}(U),$x=function(){return($x=Object.assign||function(t){for(var e,n=1,i=arguments.length;n mat-spinner[_ngcontent-%COMP%]{opacity:.5}"]}),t}(),vC=function(){function t(t,e){this.authService=t,this.router=e}return t.prototype.ngOnInit=function(){var t=this;this.verificationSubscription=this.authService.checkLogin().subscribe((function(e){t.router.navigate(e!==iC.NotLogged?["nodes"]:["login"],{replaceUrl:!0})}),(function(){t.router.navigate(["nodes"],{replaceUrl:!0})}))},t.prototype.ngOnDestroy=function(){this.verificationSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)(rs(rC),rs(ub))},t.\u0275cmp=Fe({type:t,selectors:[["app-start"]],decls:2,vars:0,consts:[[1,"h-100","w-100"]],template:function(t,e){1&t&&(ls(0,"div",0),cs(1,"app-loading-indicator"),us())},directives:[gC],styles:[""]}),t}(),_C=new se("NgValueAccessor"),yC={provide:_C,useExisting:Ut((function(){return bC})),multi:!0},bC=function(){var t=function(){function t(e,n){_(this,t),this._renderer=e,this._elementRef=n,this.onChange=function(t){},this.onTouched=function(){}}return b(t,[{key:"writeValue",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"checked",t)}},{key:"registerOnChange",value:function(t){this.onChange=t}},{key:"registerOnTouched",value:function(t){this.onTouched=t}},{key:"setDisabledState",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Yl),rs(Pl))},t.\u0275dir=Ve({type:t,selectors:[["input","type","checkbox","formControlName",""],["input","type","checkbox","formControl",""],["input","type","checkbox","ngModel",""]],hostBindings:function(t,e){1&t&&vs("change",(function(t){return e.onChange(t.target.checked)}))("blur",(function(){return e.onTouched()}))},features:[Cl([yC])]}),t}(),kC={provide:_C,useExisting:Ut((function(){return MC})),multi:!0},wC=new se("CompositionEventMode"),MC=function(){var t=function(){function t(e,n,i){var r;_(this,t),this._renderer=e,this._elementRef=n,this._compositionMode=i,this.onChange=function(t){},this.onTouched=function(){},this._composing=!1,null==this._compositionMode&&(this._compositionMode=(r=ed()?ed().getUserAgent():"",!/android (\d+)/.test(r.toLowerCase())))}return b(t,[{key:"writeValue",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}},{key:"registerOnChange",value:function(t){this.onChange=t}},{key:"registerOnTouched",value:function(t){this.onTouched=t}},{key:"setDisabledState",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}},{key:"_handleInput",value:function(t){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(t)}},{key:"_compositionStart",value:function(){this._composing=!0}},{key:"_compositionEnd",value:function(t){this._composing=!1,this._compositionMode&&this.onChange(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Yl),rs(Pl),rs(wC,8))},t.\u0275dir=Ve({type:t,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(t,e){1&t&&vs("input",(function(t){return e._handleInput(t.target.value)}))("blur",(function(){return e.onTouched()}))("compositionstart",(function(){return e._compositionStart()}))("compositionend",(function(t){return e._compositionEnd(t.target.value)}))},features:[Cl([kC])]}),t}(),SC=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"reset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;this.control&&this.control.reset(t)}},{key:"hasError",value:function(t,e){return!!this.control&&this.control.hasError(t,e)}},{key:"getError",value:function(t,e){return this.control?this.control.getError(t,e):null}},{key:"value",get:function(){return this.control?this.control.value:null}},{key:"valid",get:function(){return this.control?this.control.valid:null}},{key:"invalid",get:function(){return this.control?this.control.invalid:null}},{key:"pending",get:function(){return this.control?this.control.pending:null}},{key:"disabled",get:function(){return this.control?this.control.disabled:null}},{key:"enabled",get:function(){return this.control?this.control.enabled:null}},{key:"errors",get:function(){return this.control?this.control.errors:null}},{key:"pristine",get:function(){return this.control?this.control.pristine:null}},{key:"dirty",get:function(){return this.control?this.control.dirty:null}},{key:"touched",get:function(){return this.control?this.control.touched:null}},{key:"status",get:function(){return this.control?this.control.status:null}},{key:"untouched",get:function(){return this.control?this.control.untouched:null}},{key:"statusChanges",get:function(){return this.control?this.control.statusChanges:null}},{key:"valueChanges",get:function(){return this.control?this.control.valueChanges:null}},{key:"path",get:function(){return null}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t}),t}(),xC=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"formDirective",get:function(){return null}},{key:"path",get:function(){return null}}]),n}(SC);return t.\u0275fac=function(e){return CC(e||t)},t.\u0275dir=Ve({type:t,features:[fl]}),t}(),CC=Bi(xC);function DC(){throw new Error("unimplemented")}var LC=function(t){f(n,t);var e=v(n);function n(){var t;return _(this,n),(t=e.apply(this,arguments))._parent=null,t.name=null,t.valueAccessor=null,t._rawValidators=[],t._rawAsyncValidators=[],t}return b(n,[{key:"validator",get:function(){return DC()}},{key:"asyncValidator",get:function(){return DC()}}]),n}(SC),TC=function(){function t(e){_(this,t),this._cd=e}return b(t,[{key:"ngClassUntouched",get:function(){return!!this._cd.control&&this._cd.control.untouched}},{key:"ngClassTouched",get:function(){return!!this._cd.control&&this._cd.control.touched}},{key:"ngClassPristine",get:function(){return!!this._cd.control&&this._cd.control.pristine}},{key:"ngClassDirty",get:function(){return!!this._cd.control&&this._cd.control.dirty}},{key:"ngClassValid",get:function(){return!!this._cd.control&&this._cd.control.valid}},{key:"ngClassInvalid",get:function(){return!!this._cd.control&&this._cd.control.invalid}},{key:"ngClassPending",get:function(){return!!this._cd.control&&this._cd.control.pending}}]),t}(),EC=function(){var t=function(t){f(n,t);var e=v(n);function n(t){return _(this,n),e.call(this,t)}return n}(TC);return t.\u0275fac=function(e){return new(e||t)(rs(LC,2))},t.\u0275dir=Ve({type:t,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(t,e){2&t&&Vs("ng-untouched",e.ngClassUntouched)("ng-touched",e.ngClassTouched)("ng-pristine",e.ngClassPristine)("ng-dirty",e.ngClassDirty)("ng-valid",e.ngClassValid)("ng-invalid",e.ngClassInvalid)("ng-pending",e.ngClassPending)},features:[fl]}),t}(),PC=function(){var t=function(t){f(n,t);var e=v(n);function n(t){return _(this,n),e.call(this,t)}return n}(TC);return t.\u0275fac=function(e){return new(e||t)(rs(xC,2))},t.\u0275dir=Ve({type:t,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:14,hostBindings:function(t,e){2&t&&Vs("ng-untouched",e.ngClassUntouched)("ng-touched",e.ngClassTouched)("ng-pristine",e.ngClassPristine)("ng-dirty",e.ngClassDirty)("ng-valid",e.ngClassValid)("ng-invalid",e.ngClassInvalid)("ng-pending",e.ngClassPending)},features:[fl]}),t}();function OC(t){return null==t||0===t.length}function AC(t){return null!=t&&"number"==typeof t.length}var IC=new se("NgValidators"),YC=new se("NgAsyncValidators"),FC=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,RC=function(){function t(){_(this,t)}return b(t,null,[{key:"min",value:function(t){return function(e){if(OC(e.value)||OC(t))return null;var n=parseFloat(e.value);return!isNaN(n)&&nt?{max:{max:t,actual:e.value}}:null}}},{key:"required",value:function(t){return OC(t.value)?{required:!0}:null}},{key:"requiredTrue",value:function(t){return!0===t.value?null:{required:!0}}},{key:"email",value:function(t){return OC(t.value)||FC.test(t.value)?null:{email:!0}}},{key:"minLength",value:function(t){return function(e){return OC(e.value)||!AC(e.value)?null:e.value.lengtht?{maxlength:{requiredLength:t,actualLength:e.value.length}}:null}}},{key:"pattern",value:function(e){return e?("string"==typeof e?(i="","^"!==e.charAt(0)&&(i+="^"),i+=e,"$"!==e.charAt(e.length-1)&&(i+="$"),n=new RegExp(i)):(i=e.toString(),n=e),function(t){if(OC(t.value))return null;var e=t.value;return n.test(e)?null:{pattern:{requiredPattern:i,actualValue:e}}}):t.nullValidator;var n,i}},{key:"nullValidator",value:function(t){return null}},{key:"compose",value:function(t){if(!t)return null;var e=t.filter(NC);return 0==e.length?null:function(t){return jC(function(t,e){return e.map((function(e){return e(t)}))}(t,e))}}},{key:"composeAsync",value:function(t){if(!t)return null;var e=t.filter(NC);return 0==e.length?null:function(t){return ES(function(t,e){return e.map((function(e){return e(t)}))}(t,e).map(HC)).pipe(nt(jC))}}}]),t}();function NC(t){return null!=t}function HC(t){var e=ms(t)?ot(t):t;if(!gs(e))throw new Error("Expected validator to return Promise or Observable.");return e}function jC(t){var e={};return t.forEach((function(t){e=null!=t?Object.assign(Object.assign({},e),t):e})),0===Object.keys(e).length?null:e}function BC(t){return t.validate?function(e){return t.validate(e)}:t}function VC(t){return t.validate?function(e){return t.validate(e)}:t}var zC={provide:_C,useExisting:Ut((function(){return WC})),multi:!0},WC=function(){var t=function(){function t(e,n){_(this,t),this._renderer=e,this._elementRef=n,this.onChange=function(t){},this.onTouched=function(){}}return b(t,[{key:"writeValue",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"value",null==t?"":t)}},{key:"registerOnChange",value:function(t){this.onChange=function(e){t(""==e?null:parseFloat(e))}}},{key:"registerOnTouched",value:function(t){this.onTouched=t}},{key:"setDisabledState",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Yl),rs(Pl))},t.\u0275dir=Ve({type:t,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(t,e){1&t&&vs("input",(function(t){return e.onChange(t.target.value)}))("blur",(function(){return e.onTouched()}))},features:[Cl([zC])]}),t}(),UC={provide:_C,useExisting:Ut((function(){return GC})),multi:!0},qC=function(){var t=function(){function t(){_(this,t),this._accessors=[]}return b(t,[{key:"add",value:function(t,e){this._accessors.push([t,e])}},{key:"remove",value:function(t){for(var e=this._accessors.length-1;e>=0;--e)if(this._accessors[e][1]===t)return void this._accessors.splice(e,1)}},{key:"select",value:function(t){var e=this;this._accessors.forEach((function(n){e._isSameGroup(n,t)&&n[1]!==t&&n[1].fireUncheck(t.value)}))}},{key:"_isSameGroup",value:function(t,e){return!!t[0].control&&t[0]._parent===e._control._parent&&t[1].name===e.name}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),GC=function(){var t=function(){function t(e,n,i,r){_(this,t),this._renderer=e,this._elementRef=n,this._registry=i,this._injector=r,this.onChange=function(){},this.onTouched=function(){}}return b(t,[{key:"ngOnInit",value:function(){this._control=this._injector.get(LC),this._checkName(),this._registry.add(this._control,this)}},{key:"ngOnDestroy",value:function(){this._registry.remove(this)}},{key:"writeValue",value:function(t){this._state=t===this.value,this._renderer.setProperty(this._elementRef.nativeElement,"checked",this._state)}},{key:"registerOnChange",value:function(t){var e=this;this._fn=t,this.onChange=function(){t(e.value),e._registry.select(e)}}},{key:"fireUncheck",value:function(t){this.writeValue(t)}},{key:"registerOnTouched",value:function(t){this.onTouched=t}},{key:"setDisabledState",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}},{key:"_checkName",value:function(){this.name&&this.formControlName&&this.name!==this.formControlName&&this._throwNameError(),!this.name&&this.formControlName&&(this.name=this.formControlName)}},{key:"_throwNameError",value:function(){throw new Error('\n If you define both a name and a formControlName attribute on your radio button, their values\n must match. Ex:
      \n \n
      \n\n In your class:\n\n this.myGroup = new FormGroup({\n firstName: new FormControl()\n });',$C='\n
      \n
      \n \n
      \n
      \n\n In your class:\n\n this.myGroup = new FormGroup({\n person: new FormGroup({ firstName: new FormControl() })\n });',QC='\n
      \n
      \n \n
      \n
      ',XC=function(){function t(){_(this,t)}return b(t,null,[{key:"controlParentException",value:function(){throw new Error("formControlName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ".concat(ZC))}},{key:"ngModelGroupException",value:function(){throw new Error('formControlName cannot be used with an ngModelGroup parent. It is only compatible with parents\n that also have a "form" prefix: formGroupName, formArrayName, or formGroup.\n\n Option 1: Update the parent to be formGroupName (reactive form strategy)\n\n '.concat($C,"\n\n Option 2: Use ngModel instead of formControlName (template-driven strategy)\n\n ").concat(QC))}},{key:"missingFormException",value:function(){throw new Error("formGroup expects a FormGroup instance. Please pass one in.\n\n Example:\n\n ".concat(ZC))}},{key:"groupParentException",value:function(){throw new Error("formGroupName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ".concat($C))}},{key:"arrayParentException",value:function(){throw new Error("formArrayName must be used with a parent formGroup directive. You'll want to add a formGroup\n directive and pass it an existing FormGroup instance (you can create one in your class).\n\n Example:\n\n ".concat('\n
      \n
      \n
      \n \n
      \n
      \n
      \n\n In your class:\n\n this.cityArray = new FormArray([new FormControl(\'SF\')]);\n this.myGroup = new FormGroup({\n cities: this.cityArray\n });'))}},{key:"disabledAttrWarning",value:function(){console.warn("\n It looks like you're using the disabled attribute with a reactive form directive. If you set disabled to true\n when you set up this control in your component class, the disabled attribute will actually be set in the DOM for\n you. We recommend using this approach to avoid 'changed after checked' errors.\n\n Example:\n form = new FormGroup({\n first: new FormControl({value: 'Nancy', disabled: true}, Validators.required),\n last: new FormControl('Drew', Validators.required)\n });\n ")}},{key:"ngModelWarning",value:function(t){console.warn("\n It looks like you're using ngModel on the same form field as ".concat(t,".\n Support for using the ngModel input property and ngModelChange event with\n reactive form directives has been deprecated in Angular v6 and will be removed\n in a future version of Angular.\n\n For more information on this, see our API docs here:\n https://angular.io/api/forms/").concat("formControl"===t?"FormControlDirective":"FormControlName","#use-with-ngmodel\n "))}}]),t}(),tD={provide:_C,useExisting:Ut((function(){return nD})),multi:!0};function eD(t,e){return null==t?"".concat(e):(e&&"object"==typeof e&&(e="Object"),"".concat(t,": ").concat(e).slice(0,50))}var nD=function(){var t=function(){function t(e,n){_(this,t),this._renderer=e,this._elementRef=n,this._optionMap=new Map,this._idCounter=0,this.onChange=function(t){},this.onTouched=function(){},this._compareWith=Object.is}return b(t,[{key:"writeValue",value:function(t){this.value=t;var e=this._getOptionId(t);null==e&&this._renderer.setProperty(this._elementRef.nativeElement,"selectedIndex",-1);var n=eD(e,t);this._renderer.setProperty(this._elementRef.nativeElement,"value",n)}},{key:"registerOnChange",value:function(t){var e=this;this.onChange=function(n){e.value=e._getOptionValue(n),t(e.value)}}},{key:"registerOnTouched",value:function(t){this.onTouched=t}},{key:"setDisabledState",value:function(t){this._renderer.setProperty(this._elementRef.nativeElement,"disabled",t)}},{key:"_registerOption",value:function(){return(this._idCounter++).toString()}},{key:"_getOptionId",value:function(t){for(var e=0,n=Array.from(this._optionMap.keys());e-1)}}else e=function(t,e){t._setSelected(!1)};this._optionMap.forEach(e)}},{key:"registerOnChange",value:function(t){var e=this;this.onChange=function(n){var i=[];if(void 0!==n.selectedOptions)for(var r=n.selectedOptions,a=0;a1?"path: '".concat(t.path.join(" -> "),"'"):t.path[0]?"name: '".concat(t.path,"'"):"unspecified name attribute",new Error("".concat(e," ").concat(n))}function pD(t){return null!=t?RC.compose(t.map(BC)):null}function mD(t){return null!=t?RC.composeAsync(t.map(VC)):null}function gD(t,e){if(!t.hasOwnProperty("model"))return!1;var n=t.model;return!!n.isFirstChange()||!Object.is(e,n.currentValue)}var vD=[bC,JC,WC,nD,oD,GC];function _D(t,e){t._syncPendingControls(),e.forEach((function(t){var e=t.control;"submit"===e.updateOn&&e._pendingChange&&(t.viewToModelUpdate(e._pendingValue),e._pendingChange=!1)}))}function yD(t,e){if(!e)return null;Array.isArray(e)||fD(t,"Value accessor was not provided as an array for form control with");var n=void 0,i=void 0,r=void 0;return e.forEach((function(e){var a;e.constructor===MC?n=e:(a=e,vD.some((function(t){return a.constructor===t}))?(i&&fD(t,"More than one built-in value accessor matches form control with"),i=e):(r&&fD(t,"More than one custom value accessor matches form control with"),r=e))})),r||i||n||(fD(t,"No valid value accessor for form control with"),null)}function bD(t,e){var n=t.indexOf(e);n>-1&&t.splice(n,1)}function kD(t,e,n,i){ir()&&"never"!==i&&((null!==i&&"once"!==i||e._ngModelWarningSentOnce)&&("always"!==i||n._ngModelWarningSent)||(XC.ngModelWarning(t),e._ngModelWarningSentOnce=!0,n._ngModelWarningSent=!0))}function wD(t){var e=SD(t)?t.validators:t;return Array.isArray(e)?pD(e):e||null}function MD(t,e){var n=SD(e)?e.asyncValidators:t;return Array.isArray(n)?mD(n):n||null}function SD(t){return null!=t&&!Array.isArray(t)&&"object"==typeof t}var xD=function(){function t(e,n){_(this,t),this.validator=e,this.asyncValidator=n,this._onCollectionChange=function(){},this.pristine=!0,this.touched=!1,this._onDisabledChange=[]}return b(t,[{key:"setValidators",value:function(t){this.validator=wD(t)}},{key:"setAsyncValidators",value:function(t){this.asyncValidator=MD(t)}},{key:"clearValidators",value:function(){this.validator=null}},{key:"clearAsyncValidators",value:function(){this.asyncValidator=null}},{key:"markAsTouched",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.touched=!0,this._parent&&!t.onlySelf&&this._parent.markAsTouched(t)}},{key:"markAllAsTouched",value:function(){this.markAsTouched({onlySelf:!0}),this._forEachChild((function(t){return t.markAllAsTouched()}))}},{key:"markAsUntouched",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.touched=!1,this._pendingTouched=!1,this._forEachChild((function(t){t.markAsUntouched({onlySelf:!0})})),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}},{key:"markAsDirty",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.pristine=!1,this._parent&&!t.onlySelf&&this._parent.markAsDirty(t)}},{key:"markAsPristine",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.pristine=!0,this._pendingDirty=!1,this._forEachChild((function(t){t.markAsPristine({onlySelf:!0})})),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}},{key:"markAsPending",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.status="PENDING",!1!==t.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!t.onlySelf&&this._parent.markAsPending(t)}},{key:"disable",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this._parentMarkedDirty(t.onlySelf);this.status="DISABLED",this.errors=null,this._forEachChild((function(e){e.disable(Object.assign(Object.assign({},t),{onlySelf:!0}))})),this._updateValue(),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:e})),this._onDisabledChange.forEach((function(t){return t(!0)}))}},{key:"enable",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this._parentMarkedDirty(t.onlySelf);this.status="VALID",this._forEachChild((function(e){e.enable(Object.assign(Object.assign({},t),{onlySelf:!0}))})),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent}),this._updateAncestors(Object.assign(Object.assign({},t),{skipPristineCheck:e})),this._onDisabledChange.forEach((function(t){return t(!1)}))}},{key:"_updateAncestors",value:function(t){this._parent&&!t.onlySelf&&(this._parent.updateValueAndValidity(t),t.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}},{key:"setParent",value:function(t){this._parent=t}},{key:"updateValueAndValidity",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),"VALID"!==this.status&&"PENDING"!==this.status||this._runAsyncValidator(t.emitEvent)),!1!==t.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!t.onlySelf&&this._parent.updateValueAndValidity(t)}},{key:"_updateTreeValidity",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{emitEvent:!0};this._forEachChild((function(e){return e._updateTreeValidity(t)})),this.updateValueAndValidity({onlySelf:!0,emitEvent:t.emitEvent})}},{key:"_setInitialStatus",value:function(){this.status=this._allControlsDisabled()?"DISABLED":"VALID"}},{key:"_runValidator",value:function(){return this.validator?this.validator(this):null}},{key:"_runAsyncValidator",value:function(t){var e=this;if(this.asyncValidator){this.status="PENDING";var n=HC(this.asyncValidator(this));this._asyncValidationSubscription=n.subscribe((function(n){return e.setErrors(n,{emitEvent:t})}))}}},{key:"_cancelExistingSubscription",value:function(){this._asyncValidationSubscription&&this._asyncValidationSubscription.unsubscribe()}},{key:"setErrors",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.errors=t,this._updateControlsErrors(!1!==e.emitEvent)}},{key:"get",value:function(t){return function(t,e,n){if(null==e)return null;if(Array.isArray(e)||(e=e.split(".")),Array.isArray(e)&&0===e.length)return null;var i=t;return e.forEach((function(t){i=i instanceof DD?i.controls.hasOwnProperty(t)?i.controls[t]:null:i instanceof LD&&i.at(t)||null})),i}(this,t)}},{key:"getError",value:function(t,e){var n=e?this.get(e):this;return n&&n.errors?n.errors[t]:null}},{key:"hasError",value:function(t,e){return!!this.getError(t,e)}},{key:"_updateControlsErrors",value:function(t){this.status=this._calculateStatus(),t&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(t)}},{key:"_initObservables",value:function(){this.valueChanges=new Ou,this.statusChanges=new Ou}},{key:"_calculateStatus",value:function(){return this._allControlsDisabled()?"DISABLED":this.errors?"INVALID":this._anyControlsHaveStatus("PENDING")?"PENDING":this._anyControlsHaveStatus("INVALID")?"INVALID":"VALID"}},{key:"_anyControlsHaveStatus",value:function(t){return this._anyControls((function(e){return e.status===t}))}},{key:"_anyControlsDirty",value:function(){return this._anyControls((function(t){return t.dirty}))}},{key:"_anyControlsTouched",value:function(){return this._anyControls((function(t){return t.touched}))}},{key:"_updatePristine",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.pristine=!this._anyControlsDirty(),this._parent&&!t.onlySelf&&this._parent._updatePristine(t)}},{key:"_updateTouched",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.touched=this._anyControlsTouched(),this._parent&&!t.onlySelf&&this._parent._updateTouched(t)}},{key:"_isBoxedValue",value:function(t){return"object"==typeof t&&null!==t&&2===Object.keys(t).length&&"value"in t&&"disabled"in t}},{key:"_registerOnCollectionChange",value:function(t){this._onCollectionChange=t}},{key:"_setUpdateStrategy",value:function(t){SD(t)&&null!=t.updateOn&&(this._updateOn=t.updateOn)}},{key:"_parentMarkedDirty",value:function(t){return!t&&this._parent&&this._parent.dirty&&!this._parent._anyControlsDirty()}},{key:"parent",get:function(){return this._parent}},{key:"valid",get:function(){return"VALID"===this.status}},{key:"invalid",get:function(){return"INVALID"===this.status}},{key:"pending",get:function(){return"PENDING"==this.status}},{key:"disabled",get:function(){return"DISABLED"===this.status}},{key:"enabled",get:function(){return"DISABLED"!==this.status}},{key:"dirty",get:function(){return!this.pristine}},{key:"untouched",get:function(){return!this.touched}},{key:"updateOn",get:function(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}},{key:"root",get:function(){for(var t=this;t._parent;)t=t._parent;return t}}]),t}(),CD=function(t){f(n,t);var e=v(n);function n(){var t,i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1?arguments[1]:void 0,a=arguments.length>2?arguments[2]:void 0;return _(this,n),(t=e.call(this,wD(r),MD(a,r)))._onChange=[],t._applyFormState(i),t._setUpdateStrategy(r),t.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),t._initObservables(),t}return b(n,[{key:"setValue",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.value=this._pendingValue=t,this._onChange.length&&!1!==n.emitModelToViewChange&&this._onChange.forEach((function(t){return t(e.value,!1!==n.emitViewToModelChange)})),this.updateValueAndValidity(n)}},{key:"patchValue",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.setValue(t,e)}},{key:"reset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._applyFormState(t),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}},{key:"_updateValue",value:function(){}},{key:"_anyControls",value:function(t){return!1}},{key:"_allControlsDisabled",value:function(){return this.disabled}},{key:"registerOnChange",value:function(t){this._onChange.push(t)}},{key:"_clearChangeFns",value:function(){this._onChange=[],this._onDisabledChange=[],this._onCollectionChange=function(){}}},{key:"registerOnDisabledChange",value:function(t){this._onDisabledChange.push(t)}},{key:"_forEachChild",value:function(t){}},{key:"_syncPendingControls",value:function(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}},{key:"_applyFormState",value:function(t){this._isBoxedValue(t)?(this.value=this._pendingValue=t.value,t.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=t}}]),n}(xD),DD=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,wD(i),MD(r,i))).controls=t,a._initObservables(),a._setUpdateStrategy(i),a._setUpControls(),a.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),a}return b(n,[{key:"registerControl",value:function(t,e){return this.controls[t]?this.controls[t]:(this.controls[t]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}},{key:"addControl",value:function(t,e){this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}},{key:"removeControl",value:function(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange((function(){})),delete this.controls[t],this.updateValueAndValidity(),this._onCollectionChange()}},{key:"setControl",value:function(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange((function(){})),delete this.controls[t],e&&this.registerControl(t,e),this.updateValueAndValidity(),this._onCollectionChange()}},{key:"contains",value:function(t){return this.controls.hasOwnProperty(t)&&this.controls[t].enabled}},{key:"setValue",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._checkAllValuesPresent(t),Object.keys(t).forEach((function(i){e._throwIfControlMissing(i),e.controls[i].setValue(t[i],{onlySelf:!0,emitEvent:n.emitEvent})})),this.updateValueAndValidity(n)}},{key:"patchValue",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Object.keys(t).forEach((function(i){e.controls[i]&&e.controls[i].patchValue(t[i],{onlySelf:!0,emitEvent:n.emitEvent})})),this.updateValueAndValidity(n)}},{key:"reset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._forEachChild((function(n,i){n.reset(t[i],{onlySelf:!0,emitEvent:e.emitEvent})})),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}},{key:"getRawValue",value:function(){return this._reduceChildren({},(function(t,e,n){return t[n]=e instanceof CD?e.value:e.getRawValue(),t}))}},{key:"_syncPendingControls",value:function(){var t=this._reduceChildren(!1,(function(t,e){return!!e._syncPendingControls()||t}));return t&&this.updateValueAndValidity({onlySelf:!0}),t}},{key:"_throwIfControlMissing",value:function(t){if(!Object.keys(this.controls).length)throw new Error("\n There are no form controls registered with this group yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.controls[t])throw new Error("Cannot find form control with name: ".concat(t,"."))}},{key:"_forEachChild",value:function(t){var e=this;Object.keys(this.controls).forEach((function(n){return t(e.controls[n],n)}))}},{key:"_setUpControls",value:function(){var t=this;this._forEachChild((function(e){e.setParent(t),e._registerOnCollectionChange(t._onCollectionChange)}))}},{key:"_updateValue",value:function(){this.value=this._reduceValue()}},{key:"_anyControls",value:function(t){for(var e=0,n=Object.keys(this.controls);e0||this.disabled}},{key:"_checkAllValuesPresent",value:function(t){this._forEachChild((function(e,n){if(void 0===t[n])throw new Error("Must supply a value for form control with name: '".concat(n,"'."))}))}}]),n}(xD),LD=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,wD(i),MD(r,i))).controls=t,a._initObservables(),a._setUpdateStrategy(i),a._setUpControls(),a.updateValueAndValidity({onlySelf:!0,emitEvent:!1}),a}return b(n,[{key:"at",value:function(t){return this.controls[t]}},{key:"push",value:function(t){this.controls.push(t),this._registerControl(t),this.updateValueAndValidity(),this._onCollectionChange()}},{key:"insert",value:function(t,e){this.controls.splice(t,0,e),this._registerControl(e),this.updateValueAndValidity()}},{key:"removeAt",value:function(t){this.controls[t]&&this.controls[t]._registerOnCollectionChange((function(){})),this.controls.splice(t,1),this.updateValueAndValidity()}},{key:"setControl",value:function(t,e){this.controls[t]&&this.controls[t]._registerOnCollectionChange((function(){})),this.controls.splice(t,1),e&&(this.controls.splice(t,0,e),this._registerControl(e)),this.updateValueAndValidity(),this._onCollectionChange()}},{key:"setValue",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._checkAllValuesPresent(t),t.forEach((function(t,i){e._throwIfControlMissing(i),e.at(i).setValue(t,{onlySelf:!0,emitEvent:n.emitEvent})})),this.updateValueAndValidity(n)}},{key:"patchValue",value:function(t){var e=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.forEach((function(t,i){e.at(i)&&e.at(i).patchValue(t,{onlySelf:!0,emitEvent:n.emitEvent})})),this.updateValueAndValidity(n)}},{key:"reset",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._forEachChild((function(n,i){n.reset(t[i],{onlySelf:!0,emitEvent:e.emitEvent})})),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}},{key:"getRawValue",value:function(){return this.controls.map((function(t){return t instanceof CD?t.value:t.getRawValue()}))}},{key:"clear",value:function(){this.controls.length<1||(this._forEachChild((function(t){return t._registerOnCollectionChange((function(){}))})),this.controls.splice(0),this.updateValueAndValidity())}},{key:"_syncPendingControls",value:function(){var t=this.controls.reduce((function(t,e){return!!e._syncPendingControls()||t}),!1);return t&&this.updateValueAndValidity({onlySelf:!0}),t}},{key:"_throwIfControlMissing",value:function(t){if(!this.controls.length)throw new Error("\n There are no form controls registered with this array yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n ");if(!this.at(t))throw new Error("Cannot find form control at index ".concat(t))}},{key:"_forEachChild",value:function(t){this.controls.forEach((function(e,n){t(e,n)}))}},{key:"_updateValue",value:function(){var t=this;this.value=this.controls.filter((function(e){return e.enabled||t.disabled})).map((function(t){return t.value}))}},{key:"_anyControls",value:function(t){return this.controls.some((function(e){return e.enabled&&t(e)}))}},{key:"_setUpControls",value:function(){var t=this;this._forEachChild((function(e){return t._registerControl(e)}))}},{key:"_checkAllValuesPresent",value:function(t){this._forEachChild((function(e,n){if(void 0===t[n])throw new Error("Must supply a value for form control at index: ".concat(n,"."))}))}},{key:"_allControlsDisabled",value:function(){var t,e=d(this.controls);try{for(e.s();!(t=e.n()).done;)if(t.value.enabled)return!1}catch(n){e.e(n)}finally{e.f()}return this.controls.length>0||this.disabled}},{key:"_registerControl",value:function(t){t.setParent(this),t._registerOnCollectionChange(this._onCollectionChange)}},{key:"length",get:function(){return this.controls.length}}]),n}(xD),TD={provide:xC,useExisting:Ut((function(){return PD}))},ED=function(){return Promise.resolve(null)}(),PD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this)).submitted=!1,r._directives=[],r.ngSubmit=new Ou,r.form=new DD({},pD(t),mD(i)),r}return b(n,[{key:"ngAfterViewInit",value:function(){this._setUpdateStrategy()}},{key:"addControl",value:function(t){var e=this;ED.then((function(){var n=e._findContainer(t.path);t.control=n.registerControl(t.name,t.control),uD(t.control,t),t.control.updateValueAndValidity({emitEvent:!1}),e._directives.push(t)}))}},{key:"getControl",value:function(t){return this.form.get(t.path)}},{key:"removeControl",value:function(t){var e=this;ED.then((function(){var n=e._findContainer(t.path);n&&n.removeControl(t.name),bD(e._directives,t)}))}},{key:"addFormGroup",value:function(t){var e=this;ED.then((function(){var n=e._findContainer(t.path),i=new DD({});dD(i,t),n.registerControl(t.name,i),i.updateValueAndValidity({emitEvent:!1})}))}},{key:"removeFormGroup",value:function(t){var e=this;ED.then((function(){var n=e._findContainer(t.path);n&&n.removeControl(t.name)}))}},{key:"getFormGroup",value:function(t){return this.form.get(t.path)}},{key:"updateModel",value:function(t,e){var n=this;ED.then((function(){n.form.get(t.path).setValue(e)}))}},{key:"setValue",value:function(t){this.control.setValue(t)}},{key:"onSubmit",value:function(t){return this.submitted=!0,_D(this.form,this._directives),this.ngSubmit.emit(t),!1}},{key:"onReset",value:function(){this.resetForm()}},{key:"resetForm",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;this.form.reset(t),this.submitted=!1}},{key:"_setUpdateStrategy",value:function(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}},{key:"_findContainer",value:function(t){return t.pop(),t.length?this.form.get(t):this.form}},{key:"formDirective",get:function(){return this}},{key:"control",get:function(){return this.form}},{key:"path",get:function(){return[]}},{key:"controls",get:function(){return this.form.controls}}]),n}(xC);return t.\u0275fac=function(e){return new(e||t)(rs(IC,10),rs(YC,10))},t.\u0275dir=Ve({type:t,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(t,e){1&t&&vs("submit",(function(t){return e.onSubmit(t)}))("reset",(function(){return e.onReset()}))},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Cl([TD]),fl]}),t}(),OD=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"ngOnInit",value:function(){this._checkParentType(),this.formDirective.addFormGroup(this)}},{key:"ngOnDestroy",value:function(){this.formDirective&&this.formDirective.removeFormGroup(this)}},{key:"_checkParentType",value:function(){}},{key:"control",get:function(){return this.formDirective.getFormGroup(this)}},{key:"path",get:function(){return lD(null==this.name?this.name:this.name.toString(),this._parent)}},{key:"formDirective",get:function(){return this._parent?this._parent.formDirective:null}},{key:"validator",get:function(){return pD(this._validators)}},{key:"asyncValidator",get:function(){return mD(this._asyncValidators)}}]),n}(xC);return t.\u0275fac=function(e){return AD(e||t)},t.\u0275dir=Ve({type:t,features:[fl]}),t}(),AD=Bi(OD),ID=function(){function t(){_(this,t)}return b(t,null,[{key:"modelParentException",value:function(){throw new Error('\n ngModel cannot be used to register form controls with a parent formGroup directive. Try using\n formGroup\'s partner directive "formControlName" instead. Example:\n\n '.concat(ZC,"\n\n Or, if you'd like to avoid registering this form control, indicate that it's standalone in ngModelOptions:\n\n Example:\n\n ").concat('\n
      \n \n \n
      \n '))}},{key:"formGroupNameException",value:function(){throw new Error("\n ngModel cannot be used to register form controls with a parent formGroupName or formArrayName directive.\n\n Option 1: Use formControlName instead of ngModel (reactive strategy):\n\n ".concat($C,"\n\n Option 2: Update ngModel's parent be ngModelGroup (template-driven strategy):\n\n ").concat(QC))}},{key:"missingNameException",value:function(){throw new Error('If ngModel is used within a form tag, either the name attribute must be set or the form\n control must be defined as \'standalone\' in ngModelOptions.\n\n Example 1: \n Example 2: ')}},{key:"modelGroupParentException",value:function(){throw new Error("\n ngModelGroup cannot be used with a parent formGroup directive.\n\n Option 1: Use formGroupName instead of ngModelGroup (reactive strategy):\n\n ".concat($C,"\n\n Option 2: Use a regular form tag instead of the formGroup directive (template-driven strategy):\n\n ").concat(QC))}}]),t}(),YD={provide:xC,useExisting:Ut((function(){return FD}))},FD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this))._parent=t,a._validators=i,a._asyncValidators=r,a}return b(n,[{key:"_checkParentType",value:function(){this._parent instanceof n||this._parent instanceof PD||ID.modelGroupParentException()}}]),n}(OD);return t.\u0275fac=function(e){return new(e||t)(rs(xC,5),rs(IC,10),rs(YC,10))},t.\u0275dir=Ve({type:t,selectors:[["","ngModelGroup",""]],inputs:{name:["ngModelGroup","name"]},exportAs:["ngModelGroup"],features:[Cl([YD]),fl]}),t}(),RD={provide:LC,useExisting:Ut((function(){return HD}))},ND=function(){return Promise.resolve(null)}(),HD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,o){var s;return _(this,n),(s=e.call(this)).control=new CD,s._registered=!1,s.update=new Ou,s._parent=t,s._rawValidators=i||[],s._rawAsyncValidators=r||[],s.valueAccessor=yD(a(s),o),s}return b(n,[{key:"ngOnChanges",value:function(t){this._checkForErrors(),this._registered||this._setUpControl(),"isDisabled"in t&&this._updateDisabled(t),gD(t,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}},{key:"ngOnDestroy",value:function(){this.formDirective&&this.formDirective.removeControl(this)}},{key:"viewToModelUpdate",value:function(t){this.viewModel=t,this.update.emit(t)}},{key:"_setUpControl",value:function(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}},{key:"_setUpdateStrategy",value:function(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}},{key:"_isStandalone",value:function(){return!this._parent||!(!this.options||!this.options.standalone)}},{key:"_setUpStandalone",value:function(){uD(this.control,this),this.control.updateValueAndValidity({emitEvent:!1})}},{key:"_checkForErrors",value:function(){this._isStandalone()||this._checkParentType(),this._checkName()}},{key:"_checkParentType",value:function(){!(this._parent instanceof FD)&&this._parent instanceof OD?ID.formGroupNameException():this._parent instanceof FD||this._parent instanceof PD||ID.modelParentException()}},{key:"_checkName",value:function(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()||this.name||ID.missingNameException()}},{key:"_updateValue",value:function(t){var e=this;ND.then((function(){e.control.setValue(t,{emitViewToModelChange:!1})}))}},{key:"_updateDisabled",value:function(t){var e=this,n=t.isDisabled.currentValue,i=""===n||n&&"false"!==n;ND.then((function(){i&&!e.control.disabled?e.control.disable():!i&&e.control.disabled&&e.control.enable()}))}},{key:"path",get:function(){return this._parent?lD(this.name,this._parent):[this.name]}},{key:"formDirective",get:function(){return this._parent?this._parent.formDirective:null}},{key:"validator",get:function(){return pD(this._rawValidators)}},{key:"asyncValidator",get:function(){return mD(this._rawAsyncValidators)}}]),n}(LC);return t.\u0275fac=function(e){return new(e||t)(rs(xC,9),rs(IC,10),rs(YC,10),rs(_C,10))},t.\u0275dir=Ve({type:t,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[Cl([RD]),fl,en]}),t}(),jD=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]}),t}(),BD=new se("NgModelWithFormControlWarning"),VD={provide:LC,useExisting:Ut((function(){return zD}))},zD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,o){var s;return _(this,n),(s=e.call(this))._ngModelWarningConfig=o,s.update=new Ou,s._ngModelWarningSent=!1,s._rawValidators=t||[],s._rawAsyncValidators=i||[],s.valueAccessor=yD(a(s),r),s}return b(n,[{key:"ngOnChanges",value:function(t){this._isControlChanged(t)&&(uD(this.form,this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this.form.updateValueAndValidity({emitEvent:!1})),gD(t,this.viewModel)&&(kD("formControl",n,this,this._ngModelWarningConfig),this.form.setValue(this.model),this.viewModel=this.model)}},{key:"viewToModelUpdate",value:function(t){this.viewModel=t,this.update.emit(t)}},{key:"_isControlChanged",value:function(t){return t.hasOwnProperty("form")}},{key:"isDisabled",set:function(t){XC.disabledAttrWarning()}},{key:"path",get:function(){return[]}},{key:"validator",get:function(){return pD(this._rawValidators)}},{key:"asyncValidator",get:function(){return mD(this._rawAsyncValidators)}},{key:"control",get:function(){return this.form}}]),n}(LC);return t.\u0275fac=function(e){return new(e||t)(rs(IC,10),rs(YC,10),rs(_C,10),rs(BD,8))},t.\u0275dir=Ve({type:t,selectors:[["","formControl",""]],inputs:{isDisabled:["disabled","isDisabled"],form:["formControl","form"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[Cl([VD]),fl,en]}),t._ngModelWarningSentOnce=!1,t}(),WD={provide:xC,useExisting:Ut((function(){return UD}))},UD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this))._validators=t,r._asyncValidators=i,r.submitted=!1,r.directives=[],r.form=null,r.ngSubmit=new Ou,r}return b(n,[{key:"ngOnChanges",value:function(t){this._checkFormPresent(),t.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations())}},{key:"addControl",value:function(t){var e=this.form.get(t.path);return uD(e,t),e.updateValueAndValidity({emitEvent:!1}),this.directives.push(t),e}},{key:"getControl",value:function(t){return this.form.get(t.path)}},{key:"removeControl",value:function(t){bD(this.directives,t)}},{key:"addFormGroup",value:function(t){var e=this.form.get(t.path);dD(e,t),e.updateValueAndValidity({emitEvent:!1})}},{key:"removeFormGroup",value:function(t){}},{key:"getFormGroup",value:function(t){return this.form.get(t.path)}},{key:"addFormArray",value:function(t){var e=this.form.get(t.path);dD(e,t),e.updateValueAndValidity({emitEvent:!1})}},{key:"removeFormArray",value:function(t){}},{key:"getFormArray",value:function(t){return this.form.get(t.path)}},{key:"updateModel",value:function(t,e){this.form.get(t.path).setValue(e)}},{key:"onSubmit",value:function(t){return this.submitted=!0,_D(this.form,this.directives),this.ngSubmit.emit(t),!1}},{key:"onReset",value:function(){this.resetForm()}},{key:"resetForm",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0;this.form.reset(t),this.submitted=!1}},{key:"_updateDomValue",value:function(){var t=this;this.directives.forEach((function(e){var n=t.form.get(e.path);e.control!==n&&(function(t,e){e.valueAccessor.registerOnChange((function(){return hD(e)})),e.valueAccessor.registerOnTouched((function(){return hD(e)})),e._rawValidators.forEach((function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(null)})),e._rawAsyncValidators.forEach((function(t){t.registerOnValidatorChange&&t.registerOnValidatorChange(null)})),t&&t._clearChangeFns()}(e.control,e),n&&uD(n,e),e.control=n)})),this.form._updateTreeValidity({emitEvent:!1})}},{key:"_updateRegistrations",value:function(){var t=this;this.form._registerOnCollectionChange((function(){return t._updateDomValue()})),this._oldForm&&this._oldForm._registerOnCollectionChange((function(){})),this._oldForm=this.form}},{key:"_updateValidators",value:function(){var t=pD(this._validators);this.form.validator=RC.compose([this.form.validator,t]);var e=mD(this._asyncValidators);this.form.asyncValidator=RC.composeAsync([this.form.asyncValidator,e])}},{key:"_checkFormPresent",value:function(){this.form||XC.missingFormException()}},{key:"formDirective",get:function(){return this}},{key:"control",get:function(){return this.form}},{key:"path",get:function(){return[]}}]),n}(xC);return t.\u0275fac=function(e){return new(e||t)(rs(IC,10),rs(YC,10))},t.\u0275dir=Ve({type:t,selectors:[["","formGroup",""]],hostBindings:function(t,e){1&t&&vs("submit",(function(t){return e.onSubmit(t)}))("reset",(function(){return e.onReset()}))},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Cl([WD]),fl,en]}),t}(),qD={provide:xC,useExisting:Ut((function(){return GD}))},GD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this))._parent=t,a._validators=i,a._asyncValidators=r,a}return b(n,[{key:"_checkParentType",value:function(){ZD(this._parent)&&XC.groupParentException()}}]),n}(OD);return t.\u0275fac=function(e){return new(e||t)(rs(xC,13),rs(IC,10),rs(YC,10))},t.\u0275dir=Ve({type:t,selectors:[["","formGroupName",""]],inputs:{name:["formGroupName","name"]},features:[Cl([qD]),fl]}),t}(),KD={provide:xC,useExisting:Ut((function(){return JD}))},JD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this))._parent=t,a._validators=i,a._asyncValidators=r,a}return b(n,[{key:"ngOnInit",value:function(){this._checkParentType(),this.formDirective.addFormArray(this)}},{key:"ngOnDestroy",value:function(){this.formDirective&&this.formDirective.removeFormArray(this)}},{key:"_checkParentType",value:function(){ZD(this._parent)&&XC.arrayParentException()}},{key:"control",get:function(){return this.formDirective.getFormArray(this)}},{key:"formDirective",get:function(){return this._parent?this._parent.formDirective:null}},{key:"path",get:function(){return lD(null==this.name?this.name:this.name.toString(),this._parent)}},{key:"validator",get:function(){return pD(this._validators)}},{key:"asyncValidator",get:function(){return mD(this._asyncValidators)}}]),n}(xC);return t.\u0275fac=function(e){return new(e||t)(rs(xC,13),rs(IC,10),rs(YC,10))},t.\u0275dir=Ve({type:t,selectors:[["","formArrayName",""]],inputs:{name:["formArrayName","name"]},features:[Cl([KD]),fl]}),t}();function ZD(t){return!(t instanceof GD||t instanceof UD||t instanceof JD)}var $D={provide:LC,useExisting:Ut((function(){return QD}))},QD=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,o,s){var l;return _(this,n),(l=e.call(this))._ngModelWarningConfig=s,l._added=!1,l.update=new Ou,l._ngModelWarningSent=!1,l._parent=t,l._rawValidators=i||[],l._rawAsyncValidators=r||[],l.valueAccessor=yD(a(l),o),l}return b(n,[{key:"ngOnChanges",value:function(t){this._added||this._setUpControl(),gD(t,this.viewModel)&&(kD("formControlName",n,this,this._ngModelWarningConfig),this.viewModel=this.model,this.formDirective.updateModel(this,this.model))}},{key:"ngOnDestroy",value:function(){this.formDirective&&this.formDirective.removeControl(this)}},{key:"viewToModelUpdate",value:function(t){this.viewModel=t,this.update.emit(t)}},{key:"_checkParentType",value:function(){!(this._parent instanceof GD)&&this._parent instanceof OD?XC.ngModelGroupException():this._parent instanceof GD||this._parent instanceof UD||this._parent instanceof JD||XC.controlParentException()}},{key:"_setUpControl",value:function(){this._checkParentType(),this.control=this.formDirective.addControl(this),this.control.disabled&&this.valueAccessor.setDisabledState&&this.valueAccessor.setDisabledState(!0),this._added=!0}},{key:"isDisabled",set:function(t){XC.disabledAttrWarning()}},{key:"path",get:function(){return lD(null==this.name?this.name:this.name.toString(),this._parent)}},{key:"formDirective",get:function(){return this._parent?this._parent.formDirective:null}},{key:"validator",get:function(){return pD(this._rawValidators)}},{key:"asyncValidator",get:function(){return mD(this._rawAsyncValidators)}}]),n}(LC);return t.\u0275fac=function(e){return new(e||t)(rs(xC,13),rs(IC,10),rs(YC,10),rs(_C,10),rs(BD,8))},t.\u0275dir=Ve({type:t,selectors:[["","formControlName",""]],inputs:{isDisabled:["disabled","isDisabled"],name:["formControlName","name"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},features:[Cl([$D]),fl,en]}),t._ngModelWarningSentOnce=!1,t}(),XD={provide:IC,useExisting:Ut((function(){return eL})),multi:!0},tL={provide:IC,useExisting:Ut((function(){return nL})),multi:!0},eL=function(){var t=function(){function t(){_(this,t),this._required=!1}return b(t,[{key:"validate",value:function(t){return this.required?RC.required(t):null}},{key:"registerOnValidatorChange",value:function(t){this._onChange=t}},{key:"required",get:function(){return this._required},set:function(t){this._required=null!=t&&!1!==t&&"false"!=="".concat(t),this._onChange&&this._onChange()}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(t,e){2&t&&ts("required",e.required?"":null)},inputs:{required:"required"},features:[Cl([XD])]}),t}(),nL=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"validate",value:function(t){return this.required?RC.requiredTrue(t):null}}]),n}(eL);return t.\u0275fac=function(e){return iL(e||t)},t.\u0275dir=Ve({type:t,selectors:[["input","type","checkbox","required","","formControlName",""],["input","type","checkbox","required","","formControl",""],["input","type","checkbox","required","","ngModel",""]],hostVars:1,hostBindings:function(t,e){2&t&&ts("required",e.required?"":null)},features:[Cl([tL]),fl]}),t}(),iL=Bi(nL),rL={provide:IC,useExisting:Ut((function(){return aL})),multi:!0},aL=function(){var t=function(){function t(){_(this,t),this._enabled=!1}return b(t,[{key:"validate",value:function(t){return this._enabled?RC.email(t):null}},{key:"registerOnValidatorChange",value:function(t){this._onChange=t}},{key:"email",set:function(t){this._enabled=""===t||!0===t||"true"===t,this._onChange&&this._onChange()}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","email","","formControlName",""],["","email","","formControl",""],["","email","","ngModel",""]],inputs:{email:"email"},features:[Cl([rL])]}),t}(),oL={provide:IC,useExisting:Ut((function(){return sL})),multi:!0},sL=function(){var t=function(){function t(){_(this,t),this._validator=RC.nullValidator}return b(t,[{key:"ngOnChanges",value:function(t){"minlength"in t&&(this._createValidator(),this._onChange&&this._onChange())}},{key:"validate",value:function(t){return null==this.minlength?null:this._validator(t)}},{key:"registerOnValidatorChange",value:function(t){this._onChange=t}},{key:"_createValidator",value:function(){this._validator=RC.minLength("number"==typeof this.minlength?this.minlength:parseInt(this.minlength,10))}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","minlength","","formControlName",""],["","minlength","","formControl",""],["","minlength","","ngModel",""]],hostVars:1,hostBindings:function(t,e){2&t&&ts("minlength",e.minlength?e.minlength:null)},inputs:{minlength:"minlength"},features:[Cl([oL]),en]}),t}(),lL={provide:IC,useExisting:Ut((function(){return uL})),multi:!0},uL=function(){var t=function(){function t(){_(this,t),this._validator=RC.nullValidator}return b(t,[{key:"ngOnChanges",value:function(t){"maxlength"in t&&(this._createValidator(),this._onChange&&this._onChange())}},{key:"validate",value:function(t){return null!=this.maxlength?this._validator(t):null}},{key:"registerOnValidatorChange",value:function(t){this._onChange=t}},{key:"_createValidator",value:function(){this._validator=RC.maxLength("number"==typeof this.maxlength?this.maxlength:parseInt(this.maxlength,10))}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(t,e){2&t&&ts("maxlength",e.maxlength?e.maxlength:null)},inputs:{maxlength:"maxlength"},features:[Cl([lL]),en]}),t}(),cL={provide:IC,useExisting:Ut((function(){return dL})),multi:!0},dL=function(){var t=function(){function t(){_(this,t),this._validator=RC.nullValidator}return b(t,[{key:"ngOnChanges",value:function(t){"pattern"in t&&(this._createValidator(),this._onChange&&this._onChange())}},{key:"validate",value:function(t){return this._validator(t)}},{key:"registerOnValidatorChange",value:function(t){this._onChange=t}},{key:"_createValidator",value:function(){this._validator=RC.pattern(this.pattern)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","pattern","","formControlName",""],["","pattern","","formControl",""],["","pattern","","ngModel",""]],hostVars:1,hostBindings:function(t,e){2&t&&ts("pattern",e.pattern?e.pattern:null)},inputs:{pattern:"pattern"},features:[Cl([cL]),en]}),t}(),hL=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}();function fL(t){return void 0!==t.asyncValidators||void 0!==t.validators||void 0!==t.updateOn}var pL=function(){var t=function(){function t(){_(this,t)}return b(t,[{key:"group",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this._reduceControls(t),i=null,r=null,a=void 0;return null!=e&&(fL(e)?(i=null!=e.validators?e.validators:null,r=null!=e.asyncValidators?e.asyncValidators:null,a=null!=e.updateOn?e.updateOn:void 0):(i=null!=e.validator?e.validator:null,r=null!=e.asyncValidator?e.asyncValidator:null)),new DD(n,{asyncValidators:r,updateOn:a,validators:i})}},{key:"control",value:function(t,e,n){return new CD(t,e,n)}},{key:"array",value:function(t,e,n){var i=this,r=t.map((function(t){return i._createControl(t)}));return new LD(r,e,n)}},{key:"_reduceControls",value:function(t){var e=this,n={};return Object.keys(t).forEach((function(i){n[i]=e._createControl(t[i])})),n}},{key:"_createControl",value:function(t){return t instanceof CD||t instanceof DD||t instanceof LD?t:Array.isArray(t)?this.control(t[0],t.length>1?t[1]:null,t.length>2?t[2]:null):this.control(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac}),t}(),mL=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[qC],imports:[hL]}),t}(),gL=function(){var t=function(){function t(){_(this,t)}return b(t,null,[{key:"withConfig",value:function(e){return{ngModule:t,providers:[{provide:BD,useValue:e.warnOnNgModelWithFormControl}]}}}]),t}();return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[pL,qC],imports:[hL]}),t}();function vL(t,e){1&t&&(ls(0,"button",5),ls(1,"mat-icon"),rl(2,"close"),us(),us())}function _L(t,e){1&t&&fs(0)}var yL=function(t){return{"content-margin":t}};function bL(t,e){if(1&t&&(ls(0,"mat-dialog-content",6),ns(1,_L,1,0,"ng-container",7),us()),2&t){var n=Ms(),i=is(8);os("ngClass",wu(2,yL,n.includeVerticalMargins)),Gr(1),os("ngTemplateOutlet",i)}}function kL(t,e){1&t&&fs(0)}function wL(t,e){if(1&t&&(ls(0,"div",6),ns(1,kL,1,0,"ng-container",7),us()),2&t){var n=Ms(),i=is(8);os("ngClass",wu(2,yL,n.includeVerticalMargins)),Gr(1),os("ngTemplateOutlet",i)}}function ML(t,e){1&t&&Cs(0)}var SL=["*"],xL=function(){function t(){this.includeScrollableArea=!0,this.includeVerticalMargins=!0}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-dialog"]],inputs:{headline:"headline",disableDismiss:"disableDismiss",includeScrollableArea:"includeScrollableArea",includeVerticalMargins:"includeVerticalMargins"},ngContentSelectors:SL,decls:9,vars:4,consts:[["mat-dialog-title","",1,"header"],["mat-dialog-close","","mat-icon-button","","class","grey-button-background",4,"ngIf"],[1,"header-separator"],[3,"ngClass",4,"ngIf"],["contentTemplate",""],["mat-dialog-close","","mat-icon-button","",1,"grey-button-background"],[3,"ngClass"],[4,"ngTemplateOutlet"]],template:function(t,e){1&t&&(xs(),ls(0,"div",0),ls(1,"span"),rl(2),us(),ns(3,vL,3,0,"button",1),us(),cs(4,"div",2),ns(5,bL,2,4,"mat-dialog-content",3),ns(6,wL,2,4,"div",3),ns(7,ML,1,0,"ng-template",null,4,tc)),2&t&&(Gr(2),al(e.headline),Gr(1),os("ngIf",!e.disableDismiss),Gr(2),os("ngIf",e.includeScrollableArea),Gr(1),os("ngIf",!e.includeScrollableArea))},directives:[zx,wh,lS,Vx,US,Wx,vh,Oh],styles:['.cursor-pointer[_ngcontent-%COMP%], .header[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .reactivate-mouse[_ngcontent-%COMP%]{touch-action:auto!important;-webkit-user-select:initial!important;-moz-user-select:initial!important;-ms-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media (max-width:767px),(min-width:992px) and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media (max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important}.font-sm[_ngcontent-%COMP%], .font-smaller[_ngcontent-%COMP%]{font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%], .single-line[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.red-text[_ngcontent-%COMP%]{color:#da3439}[_nghost-%COMP%]{color:#202226}.header[_ngcontent-%COMP%]{margin:-24px -24px 0;color:#215f9e;padding:0 14px 0 24px;font-size:1rem;text-transform:uppercase;font-weight:700;display:flex;justify-content:space-between;align-items:center}@media (max-width:767px){.header[_ngcontent-%COMP%]{padding:0 2px 0 24px}}.header[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{line-height:1rem;margin:18px 0}.header[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]{color:#a6b2b2;width:32px;height:32px;line-height:20px;margin-left:10px}@media (max-width:767px){.header[_ngcontent-%COMP%] .mat-icon-button[_ngcontent-%COMP%]{width:46px;height:46px}}.header-separator[_ngcontent-%COMP%]{height:1px;background-color:rgba(33,95,158,.2);margin-left:-12px;margin-right:-12px}.content-margin[_ngcontent-%COMP%]{padding-top:18px;padding-bottom:24px!important}']}),t}(),CL=["button1"],DL=["button2"];function LL(t,e){1&t&&cs(0,"mat-spinner",4),2&t&&os("diameter",Ms().loadingSize)}function TL(t,e){1&t&&(ls(0,"mat-icon"),rl(1,"error_outline"),us())}var EL=function(t){return{"for-dark-background":t}},PL=["*"],OL=function(t){return t[t.Normal=0]="Normal",t[t.Error=1]="Error",t[t.Loading=2]="Loading",t}({}),AL=function(){function t(){this.forDarkBackground=!1,this.disabled=!1,this.color="",this.loadingSize=24,this.action=new Ou,this.state=OL.Normal,this.buttonStates=OL}return t.prototype.ngOnDestroy=function(){this.action.complete()},t.prototype.click=function(){this.disabled||(this.reset(),this.action.emit())},t.prototype.reset=function(t){void 0===t&&(t=!0),this.state=OL.Normal,t&&(this.disabled=!1)},t.prototype.focus=function(){this.button1&&this.button1.focus(),this.button2&&this.button2.focus()},t.prototype.showEnabled=function(){this.disabled=!1},t.prototype.showDisabled=function(){this.disabled=!0},t.prototype.showLoading=function(t){void 0===t&&(t=!0),this.state=OL.Loading,t&&(this.disabled=!0)},t.prototype.showError=function(t){void 0===t&&(t=!0),this.state=OL.Error,t&&(this.disabled=!1)},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-button"]],viewQuery:function(t,e){var n;1&t&&(Uu(CL,!0),Uu(DL,!0)),2&t&&(zu(n=Zu())&&(e.button1=n.first),zu(n=Zu())&&(e.button2=n.first))},inputs:{forDarkBackground:"forDarkBackground",disabled:"disabled",color:"color",loadingSize:"loadingSize"},outputs:{action:"action"},ngContentSelectors:PL,decls:5,vars:7,consts:[["mat-raised-button","",3,"disabled","color","ngClass","click"],["button2",""],[3,"diameter",4,"ngIf"],[4,"ngIf"],[3,"diameter"]],template:function(t,e){1&t&&(xs(),ls(0,"button",0,1),vs("click",(function(){return e.click()})),ns(2,LL,1,1,"mat-spinner",2),ns(3,TL,2,0,"mat-icon",3),Cs(4),us()),2&t&&(os("disabled",e.disabled)("color",e.color)("ngClass",wu(5,EL,e.forDarkBackground)),Gr(2),os("ngIf",e.state===e.buttonStates.Loading),Gr(1),os("ngIf",e.state===e.buttonStates.Error))},directives:[lS,vh,wh,fC,US],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important}.font-sm[_ngcontent-%COMP%], .font-smaller[_ngcontent-%COMP%]{font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.single-line[_ngcontent-%COMP%], button[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.red-text[_ngcontent-%COMP%]{color:#da3439}button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px}button[_ngcontent-%COMP%] mat-spinner[_ngcontent-%COMP%] circle{stroke:#f8f9f9}mat-icon[_ngcontent-%COMP%], mat-spinner[_ngcontent-%COMP%]{display:inline-block;margin-right:20px;position:relative;top:-2px}.for-dark-background[_ngcontent-%COMP%]:disabled{background-color:#000!important;color:#fff!important;opacity:.3}"]}),t}(),IL={tooltipState:jf("state",[Uf("initial, void, hidden",Wf({opacity:0,transform:"scale(0)"})),Uf("visible",Wf({transform:"scale(1)"})),Gf("* => visible",Bf("200ms cubic-bezier(0, 0, 0.2, 1)",qf([Wf({opacity:0,transform:"scale(0)",offset:0}),Wf({opacity:.5,transform:"scale(0.99)",offset:.5}),Wf({opacity:1,transform:"scale(1)",offset:1})]))),Gf("* => hidden",Bf("100ms cubic-bezier(0, 0, 0.2, 1)",Wf({opacity:0})))])},YL=Pk({passive:!0});function FL(t){return Error('Tooltip position "'.concat(t,'" is invalid.'))}var RL=new se("mat-tooltip-scroll-strategy"),NL={provide:RL,deps:[Pw],useFactory:function(t){return function(){return t.scrollStrategies.reposition({scrollThrottle:20})}}},HL=new se("mat-tooltip-default-options",{providedIn:"root",factory:function(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}}),jL=function(){var t=function(){function t(e,n,i,r,a,o,s,l,u,c,d){var h=this;_(this,t),this._overlay=e,this._elementRef=n,this._scrollDispatcher=i,this._viewContainerRef=r,this._ngZone=a,this._platform=o,this._ariaDescriber=s,this._focusMonitor=l,this._dir=c,this._defaultOptions=d,this._position="below",this._disabled=!1,this._viewInitialized=!1,this.showDelay=this._defaultOptions.showDelay,this.hideDelay=this._defaultOptions.hideDelay,this.touchGestures="auto",this._message="",this._passiveListeners=new Map,this._destroyed=new W,this._handleKeydown=function(t){h._isTooltipVisible()&&27===t.keyCode&&!iw(t)&&(t.preventDefault(),t.stopPropagation(),h._ngZone.run((function(){return h.hide(0)})))},this._scrollStrategy=u,d&&(d.position&&(this.position=d.position),d.touchGestures&&(this.touchGestures=d.touchGestures)),a.runOutsideAngular((function(){n.nativeElement.addEventListener("keydown",h._handleKeydown)}))}return b(t,[{key:"ngAfterViewInit",value:function(){var t=this;this._viewInitialized=!0,this._setupPointerEvents(),this._focusMonitor.monitor(this._elementRef).pipe(yk(this._destroyed)).subscribe((function(e){e?"keyboard"===e&&t._ngZone.run((function(){return t.show()})):t._ngZone.run((function(){return t.hide(0)}))}))}},{key:"ngOnDestroy",value:function(){var t=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),t.removeEventListener("keydown",this._handleKeydown),this._passiveListeners.forEach((function(e,n){t.removeEventListener(n,e,YL)})),this._passiveListeners.clear(),this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(t,this.message),this._focusMonitor.stopMonitoring(t)}},{key:"show",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.showDelay;if(!this.disabled&&this.message&&(!this._isTooltipVisible()||this._tooltipInstance._showTimeoutId||this._tooltipInstance._hideTimeoutId)){var n=this._createOverlay();this._detach(),this._portal=this._portal||new qk(BL,this._viewContainerRef),this._tooltipInstance=n.attach(this._portal).instance,this._tooltipInstance.afterHidden().pipe(yk(this._destroyed)).subscribe((function(){return t._detach()})),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),this._tooltipInstance.show(e)}}},{key:"hide",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.hideDelay;this._tooltipInstance&&this._tooltipInstance.hide(t)}},{key:"toggle",value:function(){this._isTooltipVisible()?this.hide():this.show()}},{key:"_isTooltipVisible",value:function(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}},{key:"_createOverlay",value:function(){var t=this;if(this._overlayRef)return this._overlayRef;var e=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),n=this._overlay.position().flexibleConnectedTo(this._elementRef).withTransformOriginOn(".mat-tooltip").withFlexibleDimensions(!1).withViewportMargin(8).withScrollableContainers(e);return n.positionChanges.pipe(yk(this._destroyed)).subscribe((function(e){t._tooltipInstance&&e.scrollableViewProperties.isOverlayClipped&&t._tooltipInstance.isVisible()&&t._ngZone.run((function(){return t.hide(0)}))})),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:n,panelClass:"mat-tooltip-panel",scrollStrategy:this._scrollStrategy()}),this._updatePosition(),this._overlayRef.detachments().pipe(yk(this._destroyed)).subscribe((function(){return t._detach()})),this._overlayRef}},{key:"_detach",value:function(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}},{key:"_updatePosition",value:function(){var t=this._overlayRef.getConfig().positionStrategy,e=this._getOrigin(),n=this._getOverlayPosition();t.withPositions([Object.assign(Object.assign({},e.main),n.main),Object.assign(Object.assign({},e.fallback),n.fallback)])}},{key:"_getOrigin",value:function(){var t,e=!this._dir||"ltr"==this._dir.value,n=this.position;if("above"==n||"below"==n)t={originX:"center",originY:"above"==n?"top":"bottom"};else if("before"==n||"left"==n&&e||"right"==n&&!e)t={originX:"start",originY:"center"};else{if(!("after"==n||"right"==n&&e||"left"==n&&!e))throw FL(n);t={originX:"end",originY:"center"}}var i=this._invertPosition(t.originX,t.originY);return{main:t,fallback:{originX:i.x,originY:i.y}}}},{key:"_getOverlayPosition",value:function(){var t,e=!this._dir||"ltr"==this._dir.value,n=this.position;if("above"==n)t={overlayX:"center",overlayY:"bottom"};else if("below"==n)t={overlayX:"center",overlayY:"top"};else if("before"==n||"left"==n&&e||"right"==n&&!e)t={overlayX:"end",overlayY:"center"};else{if(!("after"==n||"right"==n&&e||"left"==n&&!e))throw FL(n);t={overlayX:"start",overlayY:"center"}}var i=this._invertPosition(t.overlayX,t.overlayY);return{main:t,fallback:{overlayX:i.x,overlayY:i.y}}}},{key:"_updateTooltipMessage",value:function(){var t=this;this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),this._ngZone.onMicrotaskEmpty.asObservable().pipe(wv(1),yk(this._destroyed)).subscribe((function(){t._tooltipInstance&&t._overlayRef.updatePosition()})))}},{key:"_setTooltipClass",value:function(t){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=t,this._tooltipInstance._markForCheck())}},{key:"_invertPosition",value:function(t,e){return"above"===this.position||"below"===this.position?"top"===e?e="bottom":"bottom"===e&&(e="top"):"end"===t?t="start":"start"===t&&(t="end"),{x:t,y:e}}},{key:"_setupPointerEvents",value:function(){var t=this;if(!this._disabled&&this.message&&this._viewInitialized&&!this._passiveListeners.size){if(this._platform.IOS||this._platform.ANDROID){if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();var e=function(){clearTimeout(t._touchstartTimeout),t.hide(t._defaultOptions.touchendHideDelay)};this._passiveListeners.set("touchend",e).set("touchcancel",e).set("touchstart",(function(){clearTimeout(t._touchstartTimeout),t._touchstartTimeout=setTimeout((function(){return t.show()}),500)}))}}else this._passiveListeners.set("mouseenter",(function(){return t.show()})).set("mouseleave",(function(){return t.hide()}));this._passiveListeners.forEach((function(e,n){t._elementRef.nativeElement.addEventListener(n,e,YL)}))}}},{key:"_disableNativeGesturesIfNecessary",value:function(){var t=this._elementRef.nativeElement,e=t.style,n=this.touchGestures;"off"!==n&&(("on"===n||"INPUT"!==t.nodeName&&"TEXTAREA"!==t.nodeName)&&(e.userSelect=e.msUserSelect=e.webkitUserSelect=e.MozUserSelect="none"),"on"!==n&&t.draggable||(e.webkitUserDrag="none"),e.touchAction="none",e.webkitTapHighlightColor="transparent")}},{key:"position",get:function(){return this._position},set:function(t){t!==this._position&&(this._position=t,this._overlayRef&&(this._updatePosition(),this._tooltipInstance&&this._tooltipInstance.show(0),this._overlayRef.updatePosition()))}},{key:"disabled",get:function(){return this._disabled},set:function(t){this._disabled=Jb(t),this._disabled?this.hide(0):this._setupPointerEvents()}},{key:"message",get:function(){return this._message},set:function(t){var e=this;this._message&&this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message),this._message=null!=t?"".concat(t).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEvents(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular((function(){Promise.resolve().then((function(){e._ariaDescriber.describe(e._elementRef.nativeElement,e.message)}))})))}},{key:"tooltipClass",get:function(){return this._tooltipClass},set:function(t){this._tooltipClass=t,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pw),rs(Pl),rs(Hk),rs(iu),rs(Mc),rs(Dk),rs(Zw),rs(dM),rs(RL),rs(Yk,8),rs(HL,8))},t.\u0275dir=Ve({type:t,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-tooltip-trigger"],inputs:{showDelay:["matTooltipShowDelay","showDelay"],hideDelay:["matTooltipHideDelay","hideDelay"],touchGestures:["matTooltipTouchGestures","touchGestures"],position:["matTooltipPosition","position"],disabled:["matTooltipDisabled","disabled"],message:["matTooltip","message"],tooltipClass:["matTooltipClass","tooltipClass"]},exportAs:["matTooltip"]}),t}(),BL=function(){var t=function(){function t(e,n){_(this,t),this._changeDetectorRef=e,this._breakpointObserver=n,this._visibility="initial",this._closeOnInteraction=!1,this._onHide=new W,this._isHandset=this._breakpointObserver.observe("(max-width: 599.99px) and (orientation: portrait), (max-width: 959.99px) and (orientation: landscape)")}return b(t,[{key:"show",value:function(t){var e=this;this._hideTimeoutId&&(clearTimeout(this._hideTimeoutId),this._hideTimeoutId=null),this._closeOnInteraction=!0,this._showTimeoutId=setTimeout((function(){e._visibility="visible",e._showTimeoutId=null,e._markForCheck()}),t)}},{key:"hide",value:function(t){var e=this;this._showTimeoutId&&(clearTimeout(this._showTimeoutId),this._showTimeoutId=null),this._hideTimeoutId=setTimeout((function(){e._visibility="hidden",e._hideTimeoutId=null,e._markForCheck()}),t)}},{key:"afterHidden",value:function(){return this._onHide.asObservable()}},{key:"isVisible",value:function(){return"visible"===this._visibility}},{key:"ngOnDestroy",value:function(){this._onHide.complete()}},{key:"_animationStart",value:function(){this._closeOnInteraction=!1}},{key:"_animationDone",value:function(t){var e=t.toState;"hidden"!==e||this.isVisible()||this._onHide.next(),"visible"!==e&&"hidden"!==e||(this._closeOnInteraction=!0)}},{key:"_handleBodyInteraction",value:function(){this._closeOnInteraction&&this.hide(0)}},{key:"_markForCheck",value:function(){this._changeDetectorRef.markForCheck()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(xo),rs(gS))},t.\u0275cmp=Fe({type:t,selectors:[["mat-tooltip-component"]],hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(t,e){1&t&&vs("click",(function(){return e._handleBodyInteraction()}),!1,ki),2&t&&Bs("zoom","visible"===e._visibility?1:null)},decls:3,vars:7,consts:[[1,"mat-tooltip",3,"ngClass"]],template:function(t,e){var n;1&t&&(ls(0,"div",0),vs("@state.start",(function(){return e._animationStart()}))("@state.done",(function(t){return e._animationDone(t)})),Du(1,"async"),rl(2),us()),2&t&&(Vs("mat-tooltip-handset",null==(n=Lu(1,5,e._isHandset))?null:n.matches),os("ngClass",e.tooltipClass)("@state",e._visibility),Gr(2),al(e.message))},directives:[vh],pipes:[Rh],styles:[".mat-tooltip-panel{pointer-events:none !important}.mat-tooltip{color:#fff;border-radius:4px;margin:14px;max-width:250px;padding-left:8px;padding-right:8px;overflow:hidden;text-overflow:ellipsis}.cdk-high-contrast-active .mat-tooltip{outline:solid 1px}.mat-tooltip-handset{margin:24px;padding-left:16px;padding-right:16px}\n"],encapsulation:2,data:{animation:[IL.tooltipState]},changeDetection:0}),t}(),VL=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[NL],imports:[[mM,rf,Rw,MM],MM,Vk]}),t}(),zL=["underline"],WL=["connectionContainer"],UL=["inputContainer"],qL=["label"];function GL(t,e){1&t&&(ds(0),ls(1,"div",14),cs(2,"div",15),cs(3,"div",16),cs(4,"div",17),us(),ls(5,"div",18),cs(6,"div",15),cs(7,"div",16),cs(8,"div",17),us(),hs())}function KL(t,e){1&t&&(ls(0,"div",19),Cs(1,1),us())}function JL(t,e){if(1&t&&(ds(0),Cs(1,2),ls(2,"span"),rl(3),us(),hs()),2&t){var n=Ms(2);Gr(3),al(n._control.placeholder)}}function ZL(t,e){1&t&&Cs(0,3,["*ngSwitchCase","true"])}function $L(t,e){1&t&&(ls(0,"span",23),rl(1," *"),us())}function QL(t,e){if(1&t){var n=ps();ls(0,"label",20,21),vs("cdkObserveContent",(function(){return Cn(n),Ms().updateOutlineGap()})),ns(2,JL,4,1,"ng-container",12),ns(3,ZL,1,0,"ng-content",12),ns(4,$L,2,0,"span",22),us()}if(2&t){var i=Ms();Vs("mat-empty",i._control.empty&&!i._shouldAlwaysFloat)("mat-form-field-empty",i._control.empty&&!i._shouldAlwaysFloat)("mat-accent","accent"==i.color)("mat-warn","warn"==i.color),os("cdkObserveContentDisabled","outline"!=i.appearance)("id",i._labelId)("ngSwitch",i._hasLabel()),ts("for",i._control.id)("aria-owns",i._control.id),Gr(2),os("ngSwitchCase",!1),Gr(1),os("ngSwitchCase",!0),Gr(1),os("ngIf",!i.hideRequiredMarker&&i._control.required&&!i._control.disabled)}}function XL(t,e){1&t&&(ls(0,"div",24),Cs(1,4),us())}function tT(t,e){if(1&t&&(ls(0,"div",25,26),cs(2,"span",27),us()),2&t){var n=Ms();Gr(2),Vs("mat-accent","accent"==n.color)("mat-warn","warn"==n.color)}}function eT(t,e){1&t&&(ls(0,"div"),Cs(1,5),us()),2&t&&os("@transitionMessages",Ms()._subscriptAnimationState)}function nT(t,e){if(1&t&&(ls(0,"div",31),rl(1),us()),2&t){var n=Ms(2);os("id",n._hintLabelId),Gr(1),al(n.hintLabel)}}function iT(t,e){if(1&t&&(ls(0,"div",28),ns(1,nT,2,2,"div",29),Cs(2,6),cs(3,"div",30),Cs(4,7),us()),2&t){var n=Ms();os("@transitionMessages",n._subscriptAnimationState),Gr(1),os("ngIf",n.hintLabel)}}var rT=["*",[["","matPrefix",""]],[["mat-placeholder"]],[["mat-label"]],[["","matSuffix",""]],[["mat-error"]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],aT=["*","[matPrefix]","mat-placeholder","mat-label","[matSuffix]","mat-error","mat-hint:not([align='end'])","mat-hint[align='end']"],oT=0,sT=new se("MatError"),lT=function(){var t=function t(){_(this,t),this.id="mat-error-".concat(oT++)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["mat-error"]],hostAttrs:["role","alert",1,"mat-error"],hostVars:1,hostBindings:function(t,e){2&t&&ts("id",e.id)},inputs:{id:"id"},features:[Cl([{provide:sT,useExisting:t}])]}),t}(),uT={transitionMessages:jf("transitionMessages",[Uf("enter",Wf({opacity:1,transform:"translateY(0%)"})),Gf("void => enter",[Wf({opacity:0,transform:"translateY(-100%)"}),Bf("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},cT=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t}),t}();function dT(t){return Error("A hint was already declared for 'align=\"".concat(t,"\"'."))}var hT=0,fT=new se("MatHint"),pT=function(){var t=function t(){_(this,t),this.align="start",this.id="mat-hint-".concat(hT++)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["mat-hint"]],hostAttrs:[1,"mat-hint"],hostVars:4,hostBindings:function(t,e){2&t&&(ts("id",e.id)("align",null),Vs("mat-right","end"==e.align))},inputs:{align:"align",id:"id"},features:[Cl([{provide:fT,useExisting:t}])]}),t}(),mT=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["mat-label"]]}),t}(),gT=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["mat-placeholder"]]}),t}(),vT=new se("MatPrefix"),_T=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","matPrefix",""]],features:[Cl([{provide:vT,useExisting:t}])]}),t}(),yT=new se("MatSuffix"),bT=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","matSuffix",""]],features:[Cl([{provide:yT,useExisting:t}])]}),t}(),kT=0,wT=xM((function t(e){_(this,t),this._elementRef=e}),"primary"),MT=new se("MAT_FORM_FIELD_DEFAULT_OPTIONS"),ST=new se("MatFormField"),xT=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s,l,u){var c;return _(this,n),(c=e.call(this,t))._elementRef=t,c._changeDetectorRef=i,c._dir=a,c._defaults=o,c._platform=s,c._ngZone=l,c._outlineGapCalculationNeededImmediately=!1,c._outlineGapCalculationNeededOnStable=!1,c._destroyed=new W,c._showAlwaysAnimate=!1,c._subscriptAnimationState="",c._hintLabel="",c._hintLabelId="mat-hint-".concat(kT++),c._labelId="mat-form-field-label-".concat(kT++),c._labelOptions=r||{},c.floatLabel=c._getDefaultFloatLabelState(),c._animationsEnabled="NoopAnimations"!==u,c.appearance=o&&o.appearance?o.appearance:"legacy",c._hideRequiredMarker=!(!o||null==o.hideRequiredMarker)&&o.hideRequiredMarker,c}return b(n,[{key:"getConnectedOverlayOrigin",value:function(){return this._connectionContainerRef||this._elementRef}},{key:"ngAfterContentInit",value:function(){var t=this;this._validateControlChild();var e=this._control;e.controlType&&this._elementRef.nativeElement.classList.add("mat-form-field-type-".concat(e.controlType)),e.stateChanges.pipe(Yv(null)).subscribe((function(){t._validatePlaceholders(),t._syncDescribedByIds(),t._changeDetectorRef.markForCheck()})),e.ngControl&&e.ngControl.valueChanges&&e.ngControl.valueChanges.pipe(yk(this._destroyed)).subscribe((function(){return t._changeDetectorRef.markForCheck()})),this._ngZone.runOutsideAngular((function(){t._ngZone.onStable.asObservable().pipe(yk(t._destroyed)).subscribe((function(){t._outlineGapCalculationNeededOnStable&&t.updateOutlineGap()}))})),ft(this._prefixChildren.changes,this._suffixChildren.changes).subscribe((function(){t._outlineGapCalculationNeededOnStable=!0,t._changeDetectorRef.markForCheck()})),this._hintChildren.changes.pipe(Yv(null)).subscribe((function(){t._processHints(),t._changeDetectorRef.markForCheck()})),this._errorChildren.changes.pipe(Yv(null)).subscribe((function(){t._syncDescribedByIds(),t._changeDetectorRef.markForCheck()})),this._dir&&this._dir.change.pipe(yk(this._destroyed)).subscribe((function(){"function"==typeof requestAnimationFrame?t._ngZone.runOutsideAngular((function(){requestAnimationFrame((function(){return t.updateOutlineGap()}))})):t.updateOutlineGap()}))}},{key:"ngAfterContentChecked",value:function(){this._validateControlChild(),this._outlineGapCalculationNeededImmediately&&this.updateOutlineGap()}},{key:"ngAfterViewInit",value:function(){this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}},{key:"ngOnDestroy",value:function(){this._destroyed.next(),this._destroyed.complete()}},{key:"_shouldForward",value:function(t){var e=this._control?this._control.ngControl:null;return e&&e[t]}},{key:"_hasPlaceholder",value:function(){return!!(this._control&&this._control.placeholder||this._placeholderChild)}},{key:"_hasLabel",value:function(){return!!this._labelChild}},{key:"_shouldLabelFloat",value:function(){return this._canLabelFloat&&(this._control&&this._control.shouldLabelFloat||this._shouldAlwaysFloat)}},{key:"_hideControlPlaceholder",value:function(){return"legacy"===this.appearance&&!this._hasLabel()||this._hasLabel()&&!this._shouldLabelFloat()}},{key:"_hasFloatingLabel",value:function(){return this._hasLabel()||"legacy"===this.appearance&&this._hasPlaceholder()}},{key:"_getDisplayedMessages",value:function(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}},{key:"_animateAndLockLabel",value:function(){var t=this;this._hasFloatingLabel()&&this._canLabelFloat&&(this._animationsEnabled&&this._label&&(this._showAlwaysAnimate=!0,ek(this._label.nativeElement,"transitionend").pipe(wv(1)).subscribe((function(){t._showAlwaysAnimate=!1}))),this.floatLabel="always",this._changeDetectorRef.markForCheck())}},{key:"_validatePlaceholders",value:function(){if(this._control.placeholder&&this._placeholderChild)throw Error("Placeholder attribute and child element were both specified.")}},{key:"_processHints",value:function(){this._validateHints(),this._syncDescribedByIds()}},{key:"_validateHints",value:function(){var t,e,n=this;this._hintChildren&&this._hintChildren.forEach((function(i){if("start"===i.align){if(t||n.hintLabel)throw dT("start");t=i}else if("end"===i.align){if(e)throw dT("end");e=i}}))}},{key:"_getDefaultFloatLabelState",value:function(){return this._defaults&&this._defaults.floatLabel||this._labelOptions.float||"auto"}},{key:"_syncDescribedByIds",value:function(){if(this._control){var t=[];if("hint"===this._getDisplayedMessages()){var e=this._hintChildren?this._hintChildren.find((function(t){return"start"===t.align})):null,n=this._hintChildren?this._hintChildren.find((function(t){return"end"===t.align})):null;e?t.push(e.id):this._hintLabel&&t.push(this._hintLabelId),n&&t.push(n.id)}else this._errorChildren&&(t=this._errorChildren.map((function(t){return t.id})));this._control.setDescribedByIds(t)}}},{key:"_validateControlChild",value:function(){if(!this._control)throw Error("mat-form-field must contain a MatFormFieldControl.")}},{key:"updateOutlineGap",value:function(){var t=this._label?this._label.nativeElement:null;if("outline"===this.appearance&&t&&t.children.length&&t.textContent.trim()&&this._platform.isBrowser)if(this._isAttachedToDOM()){var e=0,n=0,i=this._connectionContainerRef.nativeElement,r=i.querySelectorAll(".mat-form-field-outline-start"),a=i.querySelectorAll(".mat-form-field-outline-gap");if(this._label&&this._label.nativeElement.children.length){var o=i.getBoundingClientRect();if(0===o.width&&0===o.height)return this._outlineGapCalculationNeededOnStable=!0,void(this._outlineGapCalculationNeededImmediately=!1);for(var s=this._getStartEnd(o),l=t.children,u=this._getStartEnd(l[0].getBoundingClientRect()),c=0,d=0;d0?.75*c+10:0}for(var h=0;h0&&void 0!==arguments[0]&&arguments[0];if(this._enabled&&(this._cacheTextareaLineHeight(),this._cachedLineHeight)){var n=this._elementRef.nativeElement,i=n.value;if(e||this._minRows!==this._previousMinRows||i!==this._previousValue){var r=n.placeholder;n.classList.add(this._measuringClass),n.placeholder="";var a=n.scrollHeight-4;n.style.height="".concat(a,"px"),n.classList.remove(this._measuringClass),n.placeholder=r,this._ngZone.runOutsideAngular((function(){"undefined"!=typeof requestAnimationFrame?requestAnimationFrame((function(){return t._scrollToCaretPosition(n)})):setTimeout((function(){return t._scrollToCaretPosition(n)}))})),this._previousValue=i,this._previousMinRows=this._minRows}}}},{key:"reset",value:function(){void 0!==this._initialHeight&&(this._textareaElement.style.height=this._initialHeight)}},{key:"_noopInputHandler",value:function(){}},{key:"_getDocument",value:function(){return this._document||document}},{key:"_getWindow",value:function(){return this._getDocument().defaultView||window}},{key:"_scrollToCaretPosition",value:function(t){var e=t.selectionStart,n=t.selectionEnd,i=this._getDocument();this._destroyed.isStopped||i.activeElement!==t||t.setSelectionRange(e,n)}},{key:"minRows",get:function(){return this._minRows},set:function(t){this._minRows=Zb(t),this._setMinHeight()}},{key:"maxRows",get:function(){return this._maxRows},set:function(t){this._maxRows=Zb(t),this._setMaxHeight()}},{key:"enabled",get:function(){return this._enabled},set:function(t){t=Jb(t),this._enabled!==t&&((this._enabled=t)?this.resizeToFitContent(!0):this.reset())}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Dk),rs(Mc),rs(id,8))},t.\u0275dir=Ve({type:t,selectors:[["textarea","cdkTextareaAutosize",""]],hostAttrs:["rows","1",1,"cdk-textarea-autosize"],hostBindings:function(t,e){1&t&&vs("input",(function(){return e._noopInputHandler()}))},inputs:{minRows:["cdkAutosizeMinRows","minRows"],maxRows:["cdkAutosizeMaxRows","maxRows"],enabled:["cdkTextareaAutosize","enabled"]},exportAs:["cdkTextareaAutosize"]}),t}(),PT=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[Lk]]}),t}(),OT=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return b(n,[{key:"matAutosizeMinRows",get:function(){return this.minRows},set:function(t){this.minRows=t}},{key:"matAutosizeMaxRows",get:function(){return this.maxRows},set:function(t){this.maxRows=t}},{key:"matAutosize",get:function(){return this.enabled},set:function(t){this.enabled=t}},{key:"matTextareaAutosize",get:function(){return this.enabled},set:function(t){this.enabled=t}}]),n}(ET);return t.\u0275fac=function(e){return AT(e||t)},t.\u0275dir=Ve({type:t,selectors:[["textarea","mat-autosize",""],["textarea","matTextareaAutosize",""]],hostAttrs:["rows","1",1,"cdk-textarea-autosize","mat-autosize"],inputs:{cdkAutosizeMinRows:"cdkAutosizeMinRows",cdkAutosizeMaxRows:"cdkAutosizeMaxRows",matAutosizeMinRows:"matAutosizeMinRows",matAutosizeMaxRows:"matAutosizeMaxRows",matAutosize:["mat-autosize","matAutosize"],matTextareaAutosize:"matTextareaAutosize"},exportAs:["matTextareaAutosize"],features:[fl]}),t}(),AT=Bi(OT),IT=new se("MAT_INPUT_VALUE_ACCESSOR"),YT=["button","checkbox","file","hidden","image","radio","range","reset","submit"],FT=0,RT=LM((function t(e,n,i,r){_(this,t),this._defaultErrorStateMatcher=e,this._parentForm=n,this._parentFormGroup=i,this.ngControl=r})),NT=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s,l,u,c,d){var h;_(this,n),(h=e.call(this,s,a,o,r))._elementRef=t,h._platform=i,h.ngControl=r,h._autofillMonitor=u,h._formField=d,h._uid="mat-input-".concat(FT++),h.focused=!1,h.stateChanges=new W,h.controlType="mat-input",h.autofilled=!1,h._disabled=!1,h._required=!1,h._type="text",h._readonly=!1,h._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter((function(t){return Ek().has(t)}));var f=h._elementRef.nativeElement,p=f.nodeName.toLowerCase();return h._inputValueAccessor=l||f,h._previousNativeValue=h.value,h.id=h.id,i.IOS&&c.runOutsideAngular((function(){t.nativeElement.addEventListener("keyup",(function(t){var e=t.target;e.value||e.selectionStart||e.selectionEnd||(e.setSelectionRange(1,1),e.setSelectionRange(0,0))}))})),h._isServer=!h._platform.isBrowser,h._isNativeSelect="select"===p,h._isTextarea="textarea"===p,h._isNativeSelect&&(h.controlType=f.multiple?"mat-native-select-multiple":"mat-native-select"),h}return b(n,[{key:"ngAfterViewInit",value:function(){var t=this;this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe((function(e){t.autofilled=e.isAutofilled,t.stateChanges.next()}))}},{key:"ngOnChanges",value:function(){this.stateChanges.next()}},{key:"ngOnDestroy",value:function(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement)}},{key:"ngDoCheck",value:function(){this.ngControl&&this.updateErrorState(),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}},{key:"focus",value:function(t){this._elementRef.nativeElement.focus(t)}},{key:"_focusChanged",value:function(t){t===this.focused||this.readonly&&t||(this.focused=t,this.stateChanges.next())}},{key:"_onInput",value:function(){}},{key:"_dirtyCheckPlaceholder",value:function(){var t=this._formField,e=t&&t._hideControlPlaceholder()?null:this.placeholder;if(e!==this._previousPlaceholder){var n=this._elementRef.nativeElement;this._previousPlaceholder=e,e?n.setAttribute("placeholder",e):n.removeAttribute("placeholder")}}},{key:"_dirtyCheckNativeValue",value:function(){var t=this._elementRef.nativeElement.value;this._previousNativeValue!==t&&(this._previousNativeValue=t,this.stateChanges.next())}},{key:"_validateType",value:function(){if(YT.indexOf(this._type)>-1)throw Error('Input type "'.concat(this._type,"\" isn't supported by matInput."))}},{key:"_isNeverEmpty",value:function(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}},{key:"_isBadInput",value:function(){var t=this._elementRef.nativeElement.validity;return t&&t.badInput}},{key:"setDescribedByIds",value:function(t){this._ariaDescribedby=t.join(" ")}},{key:"onContainerClick",value:function(){this.focused||this.focus()}},{key:"disabled",get:function(){return this.ngControl&&null!==this.ngControl.disabled?this.ngControl.disabled:this._disabled},set:function(t){this._disabled=Jb(t),this.focused&&(this.focused=!1,this.stateChanges.next())}},{key:"id",get:function(){return this._id},set:function(t){this._id=t||this._uid}},{key:"required",get:function(){return this._required},set:function(t){this._required=Jb(t)}},{key:"type",get:function(){return this._type},set:function(t){this._type=t||"text",this._validateType(),!this._isTextarea&&Ek().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}},{key:"value",get:function(){return this._inputValueAccessor.value},set:function(t){t!==this.value&&(this._inputValueAccessor.value=t,this.stateChanges.next())}},{key:"readonly",get:function(){return this._readonly},set:function(t){this._readonly=Jb(t)}},{key:"empty",get:function(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}},{key:"shouldLabelFloat",get:function(){if(this._isNativeSelect){var t=this._elementRef.nativeElement,e=t.options[0];return this.focused||t.multiple||!this.empty||!!(t.selectedIndex>-1&&e&&e.label)}return this.focused||!this.empty}}]),n}(RT);return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Dk),rs(LC,10),rs(PD,8),rs(UD,8),rs(EM),rs(IT,10),rs(LT),rs(Mc),rs(xT,8))},t.\u0275dir=Ve({type:t,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-input-element","mat-form-field-autofill-control"],hostVars:10,hostBindings:function(t,e){1&t&&vs("focus",(function(){return e._focusChanged(!0)}))("blur",(function(){return e._focusChanged(!1)}))("input",(function(){return e._onInput()})),2&t&&(cl("disabled",e.disabled)("required",e.required),ts("id",e.id)("data-placeholder",e.placeholder)("readonly",e.readonly&&!e._isNativeSelect||null)("aria-describedby",e._ariaDescribedby||null)("aria-invalid",e.errorState)("aria-required",e.required.toString()),Vs("mat-input-server",e._isServer))},inputs:{id:"id",disabled:"disabled",required:"required",type:"type",value:"value",readonly:"readonly",placeholder:"placeholder",errorStateMatcher:"errorStateMatcher"},exportAs:["matInput"],features:[Cl([{provide:cT,useExisting:t}]),fl,en]}),t}(),HT=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[EM],imports:[[PT,CT],PT,CT]}),t}(),jT=["button"],BT=["firstInput"];function VT(t,e){1&t&&(ls(0,"mat-form-field",10),cs(1,"input",11),Du(2,"translate"),ls(3,"mat-error"),rl(4),Du(5,"translate"),us(),us()),2&t&&(Gr(1),os("placeholder",Lu(2,2,"settings.password.old-password")),Gr(3),ol(" ",Lu(5,4,"settings.password.errors.old-password-required")," "))}var zT=function(t){return{"rounded-elevated-box":t}},WT=function(t){return{"white-form-field":t}},UT=function(t,e){return{"mt-2 app-button":t,"float-right":e}},qT=function(){function t(t,e,n,i){this.authService=t,this.router=e,this.snackbarService=n,this.dialog=i,this.forInitialConfig=!1}return t.prototype.ngOnInit=function(){var t=this;this.form=new DD({oldPassword:new CD("",this.forInitialConfig?null:RC.required),newPassword:new CD("",RC.compose([RC.required,RC.minLength(6),RC.maxLength(64)])),newPasswordConfirmation:new CD("",[RC.required,this.validatePasswords.bind(this)])}),this.formSubscription=this.form.controls.newPassword.valueChanges.subscribe((function(){return t.form.controls.newPasswordConfirmation.updateValueAndValidity()}))},t.prototype.ngAfterViewInit=function(){var t=this;this.forInitialConfig&&setTimeout((function(){return t.firstInput.nativeElement.focus()}))},t.prototype.ngOnDestroy=function(){this.subscription&&this.subscription.unsubscribe(),this.formSubscription.unsubscribe()},t.prototype.changePassword=function(){var t=this;this.form.valid&&!this.button.disabled&&(this.button.showLoading(),this.subscription=this.forInitialConfig?this.authService.initialConfig(this.form.get("newPassword").value).subscribe((function(){t.dialog.closeAll(),t.snackbarService.showDone("settings.password.initial-config.done")}),(function(e){t.button.showError(),e=Mx(e),t.snackbarService.showError(e,null,!0)})):this.authService.changePassword(this.form.get("oldPassword").value,this.form.get("newPassword").value).subscribe((function(){t.router.navigate(["nodes"]),t.snackbarService.showDone("settings.password.password-changed")}),(function(e){t.button.showError(),e=Mx(e),t.snackbarService.showError(e)})))},t.prototype.validatePasswords=function(){return this.form&&this.form.get("newPassword").value!==this.form.get("newPasswordConfirmation").value?{invalid:!0}:null},t.\u0275fac=function(e){return new(e||t)(rs(rC),rs(ub),rs(Sx),rs(jx))},t.\u0275cmp=Fe({type:t,selectors:[["app-password"]],viewQuery:function(t,e){var n;1&t&&(Uu(jT,!0),Uu(BT,!0)),2&t&&(zu(n=Zu())&&(e.button=n.first),zu(n=Zu())&&(e.firstInput=n.first))},inputs:{forInitialConfig:"forInitialConfig"},decls:25,vars:38,consts:[[3,"ngClass"],[1,"box-internal-container","overflow"],[3,"inline","matTooltip"],[3,"formGroup"],["class","white-form-field",4,"ngIf"],["type","password","formControlName","newPassword","maxlength","64","matInput","",3,"placeholder"],["firstInput",""],["type","password","formControlName","newPasswordConfirmation","maxlength","64","matInput","",3,"placeholder"],["color","primary",3,"ngClass","disabled","forDarkBackground","action"],["button",""],[1,"white-form-field"],["type","password","formControlName","oldPassword","maxlength","64","matInput","",3,"placeholder"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ls(2,"div"),ls(3,"mat-icon",2),Du(4,"translate"),rl(5," help "),us(),us(),ls(6,"form",3),ns(7,VT,6,6,"mat-form-field",4),ls(8,"mat-form-field",0),cs(9,"input",5,6),Du(11,"translate"),ls(12,"mat-error"),rl(13),Du(14,"translate"),us(),us(),ls(15,"mat-form-field",0),cs(16,"input",7),Du(17,"translate"),ls(18,"mat-error"),rl(19),Du(20,"translate"),us(),us(),ls(21,"app-button",8,9),vs("action",(function(){return e.changePassword()})),rl(23),Du(24,"translate"),us(),us(),us(),us()),2&t&&(os("ngClass",wu(29,zT,!e.forInitialConfig)),Gr(2),Us((e.forInitialConfig?"":"white-")+"form-help-icon-container"),Gr(1),os("inline",!0)("matTooltip",Lu(4,17,e.forInitialConfig?"settings.password.initial-config-help":"settings.password.help")),Gr(3),os("formGroup",e.form),Gr(1),os("ngIf",!e.forInitialConfig),Gr(1),os("ngClass",wu(31,WT,!e.forInitialConfig)),Gr(1),os("placeholder",Lu(11,19,e.forInitialConfig?"settings.password.initial-config.password":"settings.password.new-password")),Gr(4),ol(" ",Lu(14,21,"settings.password.errors.new-password-error")," "),Gr(2),os("ngClass",wu(33,WT,!e.forInitialConfig)),Gr(1),os("placeholder",Lu(17,23,e.forInitialConfig?"settings.password.initial-config.repeat-password":"settings.password.repeat-password")),Gr(3),ol(" ",Lu(20,25,"settings.password.errors.passwords-not-match")," "),Gr(2),os("ngClass",Mu(35,UT,!e.forInitialConfig,e.forInitialConfig))("disabled",!e.form.valid)("forDarkBackground",!e.forInitialConfig),Gr(2),ol(" ",Lu(24,27,e.forInitialConfig?"settings.password.initial-config.set-password":"settings.change-password")," "))},directives:[vh,US,jL,jD,PC,UD,wh,xT,MC,NT,EC,QD,uL,lT,AL],pipes:[px],styles:["app-button[_ngcontent-%COMP%], mat-form-field[_ngcontent-%COMP%]{margin-right:32px}app-button[_ngcontent-%COMP%]{float:right}"]}),t}(),GT=function(){function t(){}return t.openDialog=function(e){var n=new Tx;return n.autoFocus=!1,n.width=xx.smallModalWidth,e.open(t,n)},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-initial-setup"]],decls:3,vars:4,consts:[[3,"headline"],[3,"forInitialConfig"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),cs(2,"app-password",1),us()),2&t&&(os("headline",Lu(1,2,"settings.password.initial-config.title")),Gr(2),os("forInitialConfig",!0))},directives:[xL,qT],pipes:[px],styles:[""]}),t}();function KT(t,e){if(1&t){var n=ps();ls(0,"button",3),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms().closePopup(t)})),cs(1,"img",4),ls(2,"div",5),rl(3),us(),us()}if(2&t){var i=e.$implicit;Gr(1),os("src","assets/img/lang/"+i.iconName,Dr),Gr(2),al(i.name)}}var JT=function(){function t(t,e){this.dialogRef=t,this.languageService=e,this.languages=[]}return t.openDialog=function(e){var n=new Tx;return n.autoFocus=!1,n.width=xx.mediumModalWidth,e.open(t,n)},t.prototype.ngOnInit=function(){var t=this;this.subscription=this.languageService.languages.subscribe((function(e){t.languages=e}))},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.closePopup=function(t){void 0===t&&(t=null),t&&this.languageService.changeLanguage(t.code),this.dialogRef.close()},t.\u0275fac=function(e){return new(e||t)(rs(Ix),rs(Dx))},t.\u0275cmp=Fe({type:t,selectors:[["app-select-language"]],decls:4,vars:4,consts:[[3,"headline"],[1,"options-container"],["mat-button","","color","accent","class","grey-button-background",3,"click",4,"ngFor","ngForOf"],["mat-button","","color","accent",1,"grey-button-background",3,"click"],[3,"src"],[1,"label"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"div",1),ns(3,KT,4,2,"button",2),us(),us()),2&t&&(os("headline",Lu(1,2,"language.title")),Gr(3),os("ngForOf",e.languages))},directives:[xL,bh,lS],pipes:[px],styles:["span[_ngcontent-%COMP%]{overflow-wrap:break-word}.font-sm[_ngcontent-%COMP%]{font-size:.875rem!important}.font-sm[_ngcontent-%COMP%], .font-smaller[_ngcontent-%COMP%]{font-weight:lighter!important}.font-smaller[_ngcontent-%COMP%]{font-size:.8rem!important}.uppercase[_ngcontent-%COMP%]{text-transform:uppercase}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%], .single-line[_ngcontent-%COMP%]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.green-text[_ngcontent-%COMP%]{color:#2ecc54}.yellow-text[_ngcontent-%COMP%]{color:#d48b05}.red-text[_ngcontent-%COMP%]{color:#da3439}.options-container[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;flex-wrap:wrap}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:118px;margin:20px;font-size:.7rem;line-height:unset;padding:0;color:unset}@media (max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:90px;font-size:.6rem;margin:6px}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:64px;height:64px;margin:10px 0}@media (max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:48px;height:48px;margin:7px 0}}.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{background-color:hsla(0,0%,100%,.25);padding:4px 10px}@media (max-width:767px){.options-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{padding:4px 5px}}"]}),t}();function ZT(t,e){1&t&&cs(0,"img",2),2&t&&os("src","assets/img/lang/"+Ms().language.iconName,Dr)}var $T=function(){function t(t,e){this.languageService=t,this.dialog=e}return t.prototype.ngOnInit=function(){var t=this;this.subscription=this.languageService.currentLanguage.subscribe((function(e){t.language=e}))},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.prototype.openLanguageWindow=function(){JT.openDialog(this.dialog)},t.\u0275fac=function(e){return new(e||t)(rs(Dx),rs(jx))},t.\u0275cmp=Fe({type:t,selectors:[["app-lang-button"]],decls:3,vars:4,consts:[["mat-button","",1,"lang-button","subtle-transparent-button",3,"matTooltip","click"],["class","flag",3,"src",4,"ngIf"],[1,"flag",3,"src"]],template:function(t,e){1&t&&(ls(0,"button",0),vs("click",(function(){return e.openLanguageWindow()})),Du(1,"translate"),ns(2,ZT,1,1,"img",1),us()),2&t&&(os("matTooltip",Lu(1,2,"language.title")),Gr(2),os("ngIf",e.language))},directives:[lS,jL,wh],pipes:[px],styles:[".lang-button[_ngcontent-%COMP%]{height:40px;border-radius:10px;background-color:#f8f9f9;border-radius:100%;padding:0;line-height:normal}.lang-button[_ngcontent-%COMP%] .flag[_ngcontent-%COMP%]{width:20px;height:20px}"]}),t}(),QT=function(){function t(t,e,n,i){this.authService=t,this.router=e,this.snackbarService=n,this.dialog=i,this.loading=!1}return t.prototype.ngOnInit=function(){var t=this;this.verificationSubscription=this.authService.checkLogin().subscribe((function(e){e!==iC.NotLogged&&t.router.navigate(["nodes"],{replaceUrl:!0})})),this.form=new DD({password:new CD("",RC.required)})},t.prototype.ngOnDestroy=function(){this.loginSubscription&&this.loginSubscription.unsubscribe(),this.verificationSubscription.unsubscribe()},t.prototype.login=function(){var t=this;this.form.valid&&!this.loading&&(this.loading=!0,this.loginSubscription=this.authService.login(this.form.get("password").value).subscribe((function(){return t.onLoginSuccess()}),(function(e){return t.onLoginError(e)})))},t.prototype.configure=function(){GT.openDialog(this.dialog)},t.prototype.onLoginSuccess=function(){this.router.navigate(["nodes"],{replaceUrl:!0})},t.prototype.onLoginError=function(t){t=Mx(t),this.loading=!1,this.snackbarService.showError(t.originalError&&401===t.originalError.status?"login.incorrect-password":t.translatableErrorMsg)},t.\u0275fac=function(e){return new(e||t)(rs(rC),rs(ub),rs(Sx),rs(jx))},t.\u0275cmp=Fe({type:t,selectors:[["app-login"]],decls:14,vars:8,consts:[[1,"w-100","h-100","d-flex","justify-content-center"],[1,"row","main-container"],["src","/assets/img/logo-v.png",1,"logo"],[1,"mt-5",3,"formGroup"],[1,"login-input"],["type","password","formControlName","password","autocomplete","off",3,"placeholder","keydown.enter"],[3,"disabled","click"],[1,"config-link",3,"click"]],template:function(t,e){1&t&&(ls(0,"div",0),cs(1,"app-lang-button"),ls(2,"div",1),cs(3,"img",2),ls(4,"form",3),ls(5,"div",4),ls(6,"input",5),vs("keydown.enter",(function(){return e.login()})),Du(7,"translate"),us(),ls(8,"button",6),vs("click",(function(){return e.login()})),ls(9,"mat-icon"),rl(10,"chevron_right"),us(),us(),us(),us(),ls(11,"div",7),vs("click",(function(){return e.configure()})),rl(12),Du(13,"translate"),us(),us(),us()),2&t&&(Gr(4),os("formGroup",e.form),Gr(2),os("placeholder",Lu(7,4,"login.password")),Gr(2),os("disabled",!e.form.valid||e.loading),Gr(4),al(Lu(13,6,"login.initial-config")))},directives:[$T,jD,PC,UD,MC,EC,QD,US],pipes:[px],styles:['.config-link[_ngcontent-%COMP%], .cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%]{touch-action:auto!important;-webkit-user-select:initial!important;-moz-user-select:initial!important;-ms-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media (max-width:767px),(min-width:992px) and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media (max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}app-lang-button[_ngcontent-%COMP%]{position:fixed;right:10px;top:10px}.main-container[_ngcontent-%COMP%]{z-index:1;height:100%;flex-direction:column;align-items:center;justify-content:center}.logo[_ngcontent-%COMP%]{width:170px}.login-input[_ngcontent-%COMP%]{height:35px;width:300px;overflow:hidden;border-radius:10px;box-shadow:0 3px 8px 0 rgba(0,0,0,.1),0 6px 20px 0 rgba(0,0,0,.1);display:flex}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]{background:#fff;width:calc(100% - 35px);height:100%;font-size:.875rem;border:none;padding-left:10px;padding-right:10px}.login-input[_ngcontent-%COMP%] input[type=password][_ngcontent-%COMP%]:focus{outline:none}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{background:#fff;color:#202226;width:35px;height:35px;line-height:35px;border:none;display:flex;cursor:pointer;align-items:center}.login-input[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:disabled{color:#777}.config-link[_ngcontent-%COMP%]{color:#f8f9f9;font-size:.7rem;margin-top:20px}']}),t}();function XT(t){return t instanceof Date&&!isNaN(+t)}function tE(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:dk,n=XT(t),i=n?+t-e.now():Math.abs(t);return function(t){return t.lift(new eE(i,e))}}var eE=function(){function t(e,n){_(this,t),this.delay=e,this.scheduler=n}return b(t,[{key:"call",value:function(t,e){return e.subscribe(new nE(t,this.delay,this.scheduler))}}]),t}(),nE=function(t){f(n,t);var e=v(n);function n(t,i,r){var a;return _(this,n),(a=e.call(this,t)).delay=i,a.scheduler=r,a.queue=[],a.active=!1,a.errored=!1,a}return b(n,[{key:"_schedule",value:function(t){this.active=!0,this.destination.add(t.schedule(n.dispatch,this.delay,{source:this,destination:this.destination,scheduler:t}))}},{key:"scheduleNotification",value:function(t){if(!0!==this.errored){var e=this.scheduler,n=new iE(e.now()+this.delay,t);this.queue.push(n),!1===this.active&&this._schedule(e)}}},{key:"_next",value:function(t){this.scheduleNotification(Vb.createNext(t))}},{key:"_error",value:function(t){this.errored=!0,this.queue=[],this.destination.error(t),this.unsubscribe()}},{key:"_complete",value:function(){this.scheduleNotification(Vb.createComplete()),this.unsubscribe()}}],[{key:"dispatch",value:function(t){for(var e=t.source,n=e.queue,i=t.scheduler,r=t.destination;n.length>0&&n[0].time-i.now()<=0;)n.shift().notification.observe(r);if(n.length>0){var a=Math.max(0,n[0].time-i.now());this.schedule(t,a)}else this.unsubscribe(),e.active=!1}}]),n}(A),iE=function t(e,n){_(this,t),this.time=e,this.notification=n},rE=n("kB5k"),aE=n.n(rE),oE=function(){return function(){}}(),sE=function(){return function(){}}(),lE=function(){function t(t){this.apiService=t}return t.prototype.create=function(t,e,n){return this.apiService.post("visors/"+t+"/transports",{remote_pk:e,transport_type:n,public:!0})},t.prototype.delete=function(t,e){return this.apiService.delete("visors/"+t+"/transports/"+e)},t.prototype.types=function(t){return this.apiService.get("visors/"+t+"/transport-types")},t.\u0275prov=Ot({token:t,factory:t.\u0275fac=function(e){return new(e||t)(ge(eC))},providedIn:"root"}),t}(),uE=function(){function t(t){this.apiService=t}return t.prototype.get=function(t,e){return this.apiService.get("visors/"+t+"/routes/"+e)},t.prototype.delete=function(t,e){return this.apiService.delete("visors/"+t+"/routes/"+e)},t.\u0275prov=Ot({token:t,factory:t.\u0275fac=function(e){return new(e||t)(ge(eC))},providedIn:"root"}),t}(),cE=function(){return function(){this.totalSent=0,this.totalReceived=0,this.sentHistory=[],this.receivedHistory=[]}}(),dE=function(){return function(){}}(),hE=function(t){return t.UseCustomSettings="updaterUseCustomSettings",t.Channel="updaterChannel",t.Version="updaterVersion",t.ArchiveURL="updaterArchiveURL",t.ChecksumsURL="updaterChecksumsURL",t}({}),fE=function(){function t(t,e,n,i){var r=this;this.apiService=t,this.storageService=e,this.transportService=n,this.routeService=i,this.maxTrafficHistorySlots=10,this.nodeListSubject=new Qg(null),this.updatingNodeListSubject=new Qg(!1),this.specificNodeSubject=new Qg(null),this.updatingSpecificNodeSubject=new Qg(!1),this.specificNodeTrafficDataSubject=new Qg(null),this.specificNodeKey="",this.lastScheduledHistoryUpdateTime=0,this.storageService.getRefreshTimeObservable().subscribe((function(t){r.dataRefreshDelay=1e3*t,r.nodeListRefreshSubscription&&r.forceNodeListRefresh(),r.specificNodeRefreshSubscription&&r.forceSpecificNodeRefresh()}))}return Object.defineProperty(t.prototype,"nodeList",{get:function(){return this.nodeListSubject.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"updatingNodeList",{get:function(){return this.updatingNodeListSubject.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"specificNode",{get:function(){return this.specificNodeSubject.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"updatingSpecificNode",{get:function(){return this.updatingSpecificNodeSubject.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"specificNodeTrafficData",{get:function(){return this.specificNodeTrafficDataSubject.asObservable()},enumerable:!1,configurable:!0}),t.prototype.startRequestingNodeList=function(){if(this.nodeListStopSubscription&&!this.nodeListStopSubscription.closed)return this.nodeListStopSubscription.unsubscribe(),void(this.nodeListStopSubscription=null);var t=this.calculateRemainingTime(this.nodeListSubject.value?this.nodeListSubject.value.momentOfLastCorrectUpdate:0);this.startDataSubscription(t=t>0?t:0,!0)},t.prototype.startRequestingSpecificNode=function(t){if(this.specificNodeStopSubscription&&!this.specificNodeStopSubscription.closed&&this.specificNodeKey===t)return this.specificNodeStopSubscription.unsubscribe(),void(this.specificNodeStopSubscription=null);var e=this.calculateRemainingTime(this.specificNodeSubject.value?this.specificNodeSubject.value.momentOfLastCorrectUpdate:0);this.lastScheduledHistoryUpdateTime=0,this.specificNodeKey!==t||0===e?(this.specificNodeKey=t,this.specificNodeTrafficDataSubject.next(new cE),this.specificNodeSubject.next(null),this.startDataSubscription(0,!1)):this.startDataSubscription(e,!1)},t.prototype.calculateRemainingTime=function(t){if(t<1)return 0;var e=this.dataRefreshDelay-(Date.now()-t);return e<0&&(e=0),e},t.prototype.stopRequestingNodeList=function(){var t=this;this.nodeListRefreshSubscription&&(this.nodeListStopSubscription=pg(1).pipe(tE(4e3)).subscribe((function(){t.nodeListRefreshSubscription.unsubscribe(),t.nodeListRefreshSubscription=null})))},t.prototype.stopRequestingSpecificNode=function(){var t=this;this.specificNodeRefreshSubscription&&(this.specificNodeStopSubscription=pg(1).pipe(tE(4e3)).subscribe((function(){t.specificNodeRefreshSubscription.unsubscribe(),t.specificNodeRefreshSubscription=null})))},t.prototype.startDataSubscription=function(t,e){var n,i,r,a=this;e?(n=this.updatingNodeListSubject,i=this.nodeListSubject,r=this.getNodes(),this.nodeListRefreshSubscription&&this.nodeListRefreshSubscription.unsubscribe()):(n=this.updatingSpecificNodeSubject,i=this.specificNodeSubject,r=this.getNode(this.specificNodeKey),this.specificNodeStopSubscription&&(this.specificNodeStopSubscription.unsubscribe(),this.specificNodeStopSubscription=null),this.specificNodeRefreshSubscription&&this.specificNodeRefreshSubscription.unsubscribe());var o=pg(1).pipe(tE(t),Cv((function(){return n.next(!0)})),tE(120),st((function(){return r}))).subscribe((function(t){var r;n.next(!1),e?r=a.dataRefreshDelay:(a.updateTrafficData(t.transports),(r=a.calculateRemainingTime(a.lastScheduledHistoryUpdateTime))<1e3&&(a.lastScheduledHistoryUpdateTime=Date.now(),r=a.dataRefreshDelay));var o={data:t,error:null,momentOfLastCorrectUpdate:Date.now()};i.next(o),a.startDataSubscription(r,e)}),(function(t){n.next(!1),t=Mx(t);var r={data:i.value&&i.value.data?i.value.data:null,error:t,momentOfLastCorrectUpdate:i.value?i.value.momentOfLastCorrectUpdate:-1};!e&&t.originalError&&400===t.originalError.status||a.startDataSubscription(xx.connectionRetryDelay,e),i.next(r)}));e?this.nodeListRefreshSubscription=o:this.specificNodeRefreshSubscription=o},t.prototype.updateTrafficData=function(t){var e=this.specificNodeTrafficDataSubject.value;if(e.totalSent=0,e.totalReceived=0,t&&t.length>0&&(e.totalSent=t.reduce((function(t,e){return t+e.sent}),0),e.totalReceived=t.reduce((function(t,e){return t+e.recv}),0)),0===e.sentHistory.length)for(var n=0;nthis.maxTrafficHistorySlots&&(r=this.maxTrafficHistorySlots),0===r)e.sentHistory[e.sentHistory.length-1]=e.totalSent,e.receivedHistory[e.receivedHistory.length-1]=e.totalReceived;else for(n=0;nthis.maxTrafficHistorySlots&&(e.sentHistory.splice(0,e.sentHistory.length-this.maxTrafficHistorySlots),e.receivedHistory.splice(0,e.receivedHistory.length-this.maxTrafficHistorySlots))}this.specificNodeTrafficDataSubject.next(e)},t.prototype.forceNodeListRefresh=function(){this.nodeListSubject.value&&(this.nodeListSubject.value.momentOfLastCorrectUpdate=-1),this.startDataSubscription(0,!0)},t.prototype.forceSpecificNodeRefresh=function(){this.specificNodeSubject.value&&(this.specificNodeSubject.value.momentOfLastCorrectUpdate=-1),this.startDataSubscription(0,!1)},t.prototype.getNodes=function(){var t,e=this,n=[];return this.apiService.get("visors").pipe(st((function(t){return t&&t.forEach((function(t){var i=new oE;i.online=t.online,i.tcpAddr=t.tcp_addr,i.ip=e.getAddressPart(i.tcpAddr,0),i.port=e.getAddressPart(i.tcpAddr,1),i.localPk=t.local_pk;var r=e.storageService.getLabelInfo(i.localPk);i.label=r&&r.label?r.label:e.storageService.getDefaultLabel(i.localPk),n.push(i)})),e.apiService.get("dmsg")})),st((function(i){return t=i,ES(n.map((function(t){return e.apiService.get("visors/"+t.localPk+"/health")})))})),st((function(t){return n.forEach((function(e,n){e.health={status:t[n].status,addressResolver:t[n].address_resolver,routeFinder:t[n].route_finder,setupNode:t[n].setup_node,transportDiscovery:t[n].transport_discovery,uptimeTracker:t[n].uptime_tracker}})),e.apiService.get("about")})),nt((function(i){var r=new Map;t.forEach((function(t){return r.set(t.public_key,t)}));var a=new Map,o=[];n.forEach((function(t){r.has(t.localPk)?(t.dmsgServerPk=r.get(t.localPk).server_public_key,t.roundTripPing=e.nsToMs(r.get(t.localPk).round_trip)):(t.dmsgServerPk="-",t.roundTripPing="-1"),t.isHypervisor=t.localPk===i.public_key,a.set(t.localPk,t),t.online&&o.push(t.localPk)})),e.storageService.includeVisibleLocalNodes(o);var s=[];return e.storageService.getSavedLocalNodes().forEach((function(t){if(!a.has(t.publicKey)&&!t.hidden){var n=new oE;n.localPk=t.publicKey;var i=e.storageService.getLabelInfo(t.publicKey);n.label=i&&i.label?i.label:e.storageService.getDefaultLabel(t.publicKey),n.online=!1,s.push(n)}a.has(t.publicKey)&&!a.get(t.publicKey).online&&t.hidden&&a.delete(t.publicKey)})),n=[],a.forEach((function(t){return n.push(t)})),n=n.concat(s)})))},t.prototype.nsToMs=function(t){var e=new aE.a(t).dividedBy(1e6);return(e=e.isLessThan(10)?e.decimalPlaces(2):e.decimalPlaces(0)).toString(10)},t.prototype.getNode=function(t){var e=this;return this.apiService.get("visors/"+t+"/summary").pipe(nt((function(t){var n=new oE;n.online=t.online,n.tcpAddr=t.tcp_addr,n.ip=e.getAddressPart(n.tcpAddr,0),n.port=e.getAddressPart(n.tcpAddr,1),n.localPk=t.summary.local_pk,n.version=t.summary.build_info.version,n.secondsOnline=Math.floor(Number.parseFloat(t.uptime));var i=e.storageService.getLabelInfo(n.localPk);n.label=i&&i.label?i.label:e.storageService.getDefaultLabel(n.localPk),n.health={status:200,addressResolver:t.health.address_resolver,routeFinder:t.health.route_finder,setupNode:t.health.setup_node,transportDiscovery:t.health.transport_discovery,uptimeTracker:t.health.uptime_tracker},n.transports=[],t.summary.transports&&t.summary.transports.forEach((function(t){n.transports.push({isUp:t.is_up,id:t.id,localPk:t.local_pk,remotePk:t.remote_pk,type:t.type,recv:t.log.recv,sent:t.log.sent})})),n.routes=[],t.routes&&t.routes.forEach((function(t){n.routes.push({key:t.key,rule:t.rule}),t.rule_summary&&(n.routes[n.routes.length-1].ruleSummary={keepAlive:t.rule_summary.keep_alive,ruleType:t.rule_summary.rule_type,keyRouteId:t.rule_summary.key_route_id},t.rule_summary.app_fields&&t.rule_summary.app_fields.route_descriptor&&(n.routes[n.routes.length-1].appFields={routeDescriptor:{dstPk:t.rule_summary.app_fields.route_descriptor.dst_pk,dstPort:t.rule_summary.app_fields.route_descriptor.dst_port,srcPk:t.rule_summary.app_fields.route_descriptor.src_pk,srcPort:t.rule_summary.app_fields.route_descriptor.src_port}}),t.rule_summary.forward_fields&&(n.routes[n.routes.length-1].forwardFields={nextRid:t.rule_summary.forward_fields.next_rid,nextTid:t.rule_summary.forward_fields.next_tid},t.rule_summary.forward_fields.route_descriptor&&(n.routes[n.routes.length-1].forwardFields.routeDescriptor={dstPk:t.rule_summary.forward_fields.route_descriptor.dst_pk,dstPort:t.rule_summary.forward_fields.route_descriptor.dst_port,srcPk:t.rule_summary.forward_fields.route_descriptor.src_pk,srcPort:t.rule_summary.forward_fields.route_descriptor.src_port})),t.rule_summary.intermediary_forward_fields&&(n.routes[n.routes.length-1].intermediaryForwardFields={nextRid:t.rule_summary.intermediary_forward_fields.next_rid,nextTid:t.rule_summary.intermediary_forward_fields.next_tid}))})),n.apps=[],t.summary.apps&&t.summary.apps.forEach((function(t){n.apps.push({name:t.name,status:t.status,port:t.port,autostart:t.auto_start,args:t.args})}));for(var r=!1,a=0;a2*this.shortTextLength){var t=this.text.length;return this.text.slice(0,this.shortTextLength)+"..."+this.text.slice(t-this.shortTextLength,t)}return this.text},enumerable:!1,configurable:!0}),t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-truncated-text"]],inputs:{short:"short",showTooltip:"showTooltip",text:"text",shortTextLength:"shortTextLength"},decls:3,vars:5,consts:[[1,"wrapper",3,"matTooltip","matTooltipClass"],[4,"ngIf"],[1,"nowrap"]],template:function(t,e){1&t&&(ls(0,"div",0),ns(1,EE,3,1,"ng-container",1),ns(2,PE,3,1,"ng-container",1),us()),2&t&&(os("matTooltip",e.short&&e.showTooltip?e.text:"")("matTooltipClass",ku(4,OE)),Gr(1),os("ngIf",e.short),Gr(1),os("ngIf",!e.short))},directives:[jL,wh],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:auto!important;-webkit-user-select:initial!important;-moz-user-select:initial!important;-ms-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media (max-width:767px),(min-width:992px) and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media (max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.nowrap[_ngcontent-%COMP%]{white-space:nowrap}.wrapper[_ngcontent-%COMP%]{display:inline}']}),t}();function IE(t,e){if(1&t&&(ls(0,"span"),rl(1),Du(2,"translate"),us()),2&t){var n=Ms();Gr(1),ol(" ",Lu(2,1,n.labelComponents.prefix)," ")}}function YE(t,e){if(1&t&&(ls(0,"span"),rl(1),us()),2&t){var n=Ms();Gr(1),ol(" ",n.labelComponents.prefixSeparator," ")}}function FE(t,e){if(1&t&&(ls(0,"span"),rl(1),us()),2&t){var n=Ms();Gr(1),ol(" ",n.labelComponents.label," ")}}function RE(t,e){if(1&t&&(ls(0,"span"),rl(1),Du(2,"translate"),us()),2&t){var n=Ms();Gr(1),ol(" ",Lu(2,1,n.labelComponents.translatableLabel)," ")}}var NE=function(t){return{text:t}},HE=function(){return{"tooltip-word-break":!0}},jE=function(){return function(){this.prefix="",this.prefixSeparator="",this.label="",this.translatableLabel=""}}(),BE=function(){function t(t,e,n,i){this.dialog=t,this.storageService=e,this.clipboardService=n,this.snackbarService=i,this.short=!1,this.shortTextLength=5,this.elementType=Gb.Node,this.labelEdited=new Ou}return Object.defineProperty(t.prototype,"id",{get:function(){return this.idInternal?this.idInternal:""},set:function(e){this.idInternal=e,this.labelComponents=t.getLabelComponents(this.storageService,this.id)},enumerable:!1,configurable:!0}),t.getLabelComponents=function(t,e){var n;n=!!t.getSavedVisibleLocalNodes().has(e);var i=new jE;return i.labelInfo=t.getLabelInfo(e),i.labelInfo&&i.labelInfo.label?(n&&(i.prefix="labeled-element.local-element",i.prefixSeparator=" - "),i.label=i.labelInfo.label):t.getSavedVisibleLocalNodes().has(e)?i.prefix="labeled-element.unnamed-local-visor":i.translatableLabel="labeled-element.unnamed-element",i},t.getCompleteLabel=function(e,n,i){var r=t.getLabelComponents(e,i);return(r.prefix?n.instant(r.prefix):"")+r.prefixSeparator+r.label+(r.translatableLabel?n.instant(r.translatableLabel):"")},t.prototype.ngOnDestroy=function(){this.labelEdited.complete()},t.prototype.processClick=function(){var t=this,e=[{icon:"filter_none",label:"labeled-element.copy"},{icon:"edit",label:"labeled-element.edit-label"}];this.labelComponents.labelInfo&&e.push({icon:"close",label:"labeled-element.remove-label"}),DE.openDialog(this.dialog,e,"common.options").afterClosed().subscribe((function(e){if(1===e)t.clipboardService.copy(t.id)&&t.snackbarService.showDone("copy.copied");else if(3===e){var n=SE.createConfirmationDialog(t.dialog,"labeled-element.remove-label-confirmation");n.componentInstance.operationAccepted.subscribe((function(){n.componentInstance.closeModal(),t.storageService.saveLabel(t.id,null,t.elementType),t.snackbarService.showDone("edit-label.label-removed-warning"),t.labelEdited.emit()}))}else if(2===e){var i=t.labelComponents.labelInfo;i||(i={id:t.id,label:"",identifiedElementType:t.elementType}),mE.openDialog(t.dialog,i).afterClosed().subscribe((function(e){e&&t.labelEdited.emit()}))}}))},t.\u0275fac=function(e){return new(e||t)(rs(jx),rs(Kb),rs(LE),rs(Sx))},t.\u0275cmp=Fe({type:t,selectors:[["app-labeled-element-text"]],inputs:{id:"id",short:"short",shortTextLength:"shortTextLength",elementType:"elementType"},outputs:{labelEdited:"labelEdited"},decls:12,vars:17,consts:[[1,"wrapper","highlight-internal-icon",3,"matTooltip","matTooltipClass","click"],[1,"label"],[4,"ngIf"],[3,"short","showTooltip","shortTextLength","text"],[3,"inline"]],template:function(t,e){1&t&&(ls(0,"div",0),vs("click",(function(t){return t.stopPropagation(),e.processClick()})),Du(1,"translate"),ls(2,"span",1),ns(3,IE,3,3,"span",2),ns(4,YE,2,1,"span",2),ns(5,FE,2,1,"span",2),ns(6,RE,3,3,"span",2),us(),cs(7,"br"),cs(8,"app-truncated-text",3),rl(9," \xa0"),ls(10,"mat-icon",4),rl(11,"settings"),us(),us()),2&t&&(os("matTooltip",Tu(1,11,e.short?"labeled-element.tooltip-with-text":"labeled-element.tooltip",wu(14,NE,e.id)))("matTooltipClass",ku(16,HE)),Gr(3),os("ngIf",e.labelComponents&&e.labelComponents.prefix),Gr(1),os("ngIf",e.labelComponents&&e.labelComponents.prefixSeparator),Gr(1),os("ngIf",e.labelComponents&&e.labelComponents.label),Gr(1),os("ngIf",e.labelComponents&&e.labelComponents.translatableLabel),Gr(2),os("short",e.short)("showTooltip",!1)("shortTextLength",e.shortTextLength)("text",e.id),Gr(2),os("inline",!0))},directives:[jL,wh,AE,US],pipes:[px],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:auto!important;-webkit-user-select:initial!important;-moz-user-select:initial!important;-ms-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media (max-width:767px),(min-width:992px) and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media (max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.8rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.label[_ngcontent-%COMP%]{opacity:.7;font-size:.8rem}']}),t}(),VE=function(){function t(t,e,n,i){this.properties=t,this.label=e,this.sortingMode=n,this.labelProperties=i}return Object.defineProperty(t.prototype,"id",{get:function(){return this.properties.join("")},enumerable:!1,configurable:!0}),t}(),zE=function(t){return t.Text="Text",t.Number="Number",t.NumberReversed="NumberReversed",t.Boolean="Boolean",t}({}),WE=function(){function t(t,e,n,i,r){this.dialog=t,this.translateService=e,this.sortReverse=!1,this.sortByLabel=!1,this.columnStorageKeyPrefix="col_",this.orderStorageKeyPrefix="order_",this.labelStorageKeyPrefix="label_",this.dataUpdatedSubject=new W,this.sortableColumns=n,this.id=r,this.defaultColumnIndex=i,this.sortBy=n[i];var a=localStorage.getItem(this.columnStorageKeyPrefix+r);if(a){var o=n.find((function(t){return t.id===a}));o&&(this.sortBy=o)}this.sortReverse="true"===localStorage.getItem(this.orderStorageKeyPrefix+r),this.sortByLabel="true"===localStorage.getItem(this.labelStorageKeyPrefix+r)}return Object.defineProperty(t.prototype,"sortingArrow",{get:function(){return this.sortReverse?"keyboard_arrow_up":"keyboard_arrow_down"},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"currentSortingColumn",{get:function(){return this.sortBy},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"sortingInReverseOrder",{get:function(){return this.sortReverse},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dataSorted",{get:function(){return this.dataUpdatedSubject.asObservable()},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"currentlySortingByLabel",{get:function(){return this.sortByLabel},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this.dataUpdatedSubject.complete()},t.prototype.setData=function(t){this.data=t,this.sortData()},t.prototype.changeSortingOrder=function(t){var e=this;if(this.sortBy===t||t.labelProperties)if(t.labelProperties){var n=[{label:this.translateService.instant("tables.sort-by-value")},{label:this.translateService.instant("tables.sort-by-value")+" "+this.translateService.instant("tables.inverted-order")},{label:this.translateService.instant("tables.sort-by-label")},{label:this.translateService.instant("tables.sort-by-label")+" "+this.translateService.instant("tables.inverted-order")}];DE.openDialog(this.dialog,n,"tables.title").afterClosed().subscribe((function(n){n&&e.changeSortingParams(t,n>2,n%2==0)}))}else this.sortReverse=!this.sortReverse,localStorage.setItem(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),this.sortData();else this.changeSortingParams(t,!1,!1)},t.prototype.changeSortingParams=function(t,e,n){this.sortBy=t,this.sortByLabel=e,this.sortReverse=n,localStorage.setItem(this.columnStorageKeyPrefix+this.id,t.id),localStorage.setItem(this.orderStorageKeyPrefix+this.id,String(this.sortReverse)),localStorage.setItem(this.labelStorageKeyPrefix+this.id,String(this.sortByLabel)),this.sortData()},t.prototype.openSortingOrderModal=function(){var t=this,e=[],n=[];this.sortableColumns.forEach((function(i){var r=t.translateService.instant(i.label);e.push({label:r}),n.push({sortBy:i,sortReverse:!1,sortByLabel:!1}),e.push({label:r+" "+t.translateService.instant("tables.inverted-order")}),n.push({sortBy:i,sortReverse:!0,sortByLabel:!1}),i.labelProperties&&(e.push({label:r+" "+t.translateService.instant("tables.label")}),n.push({sortBy:i,sortReverse:!1,sortByLabel:!0}),e.push({label:r+" "+t.translateService.instant("tables.label")+" "+t.translateService.instant("tables.inverted-order")}),n.push({sortBy:i,sortReverse:!0,sortByLabel:!0}))})),DE.openDialog(this.dialog,e,"tables.title").afterClosed().subscribe((function(e){e&&t.changeSortingParams(n[e-1].sortBy,n[e-1].sortByLabel,n[e-1].sortReverse)}))},t.prototype.sortData=function(){var t=this;this.data&&(this.data.sort((function(e,n){var i=t.getSortResponse(t.sortBy,e,n,!0);return 0===i&&t.sortableColumns[t.defaultColumnIndex]!==t.sortBy&&(i=t.getSortResponse(t.sortableColumns[t.defaultColumnIndex],e,n,!1)),i})),this.dataUpdatedSubject.next())},t.prototype.getSortResponse=function(t,e,n,i){var r=e,a=n;(this.sortByLabel&&i&&t.labelProperties?t.labelProperties:t.properties).forEach((function(t){r=r[t],a=a[t]}));var o=this.sortByLabel&&i?zE.Text:t.sortingMode,s=0;return o===zE.Text?s=this.sortReverse?a.localeCompare(r):r.localeCompare(a):o===zE.NumberReversed?s=this.sortReverse?r-a:a-r:o===zE.Number?s=this.sortReverse?a-r:r-a:o===zE.Boolean&&(r&&!a?s=-1:!r&&a&&(s=1),s*=this.sortReverse?-1:1),s},t}(),UE=["trigger"],qE=["panel"];function GE(t,e){if(1&t&&(ls(0,"span",8),rl(1),us()),2&t){var n=Ms();Gr(1),al(n.placeholder||"\xa0")}}function KE(t,e){if(1&t&&(ls(0,"span"),rl(1),us()),2&t){var n=Ms(2);Gr(1),al(n.triggerValue||"\xa0")}}function JE(t,e){1&t&&Cs(0,0,["*ngSwitchCase","true"])}function ZE(t,e){1&t&&(ls(0,"span",9),ns(1,KE,2,1,"span",10),ns(2,JE,1,0,"ng-content",11),us()),2&t&&(os("ngSwitch",!!Ms().customTrigger),Gr(2),os("ngSwitchCase",!0))}function $E(t,e){if(1&t){var n=ps();ls(0,"div",12),ls(1,"div",13,14),vs("@transformPanel.done",(function(t){return Cn(n),Ms()._panelDoneAnimatingStream.next(t.toState)}))("keydown",(function(t){return Cn(n),Ms()._handleKeydown(t)})),Cs(3,1),us(),us()}if(2&t){var i=Ms();os("@transformPanelWrap",void 0),Gr(1),"mat-select-panel ",r=i._getPanelTheme(),"",Ks(Le,qs,es(Sn(),"mat-select-panel ",r,""),!0),Bs("transform-origin",i._transformOrigin)("font-size",i._triggerFontSize,"px"),os("ngClass",i.panelClass)("@transformPanel",i.multiple?"showing-multiple":"showing"),ts("id",i.id+"-panel")}var r}var QE=[[["mat-select-trigger"]],"*"],XE=["mat-select-trigger","*"],tP={transformPanelWrap:jf("transformPanelWrap",[Gf("* => void",Jf("@transformPanel",[Kf()],{optional:!0}))]),transformPanel:jf("transformPanel",[Uf("void",Wf({transform:"scaleY(0.8)",minWidth:"100%",opacity:0})),Uf("showing",Wf({opacity:1,minWidth:"calc(100% + 32px)",transform:"scaleY(1)"})),Uf("showing-multiple",Wf({opacity:1,minWidth:"calc(100% + 64px)",transform:"scaleY(1)"})),Gf("void => *",Bf("120ms cubic-bezier(0, 0, 0.2, 1)")),Gf("* => void",Bf("100ms 25ms linear",Wf({opacity:0})))])},eP=0,nP=new se("mat-select-scroll-strategy"),iP=new se("MAT_SELECT_CONFIG"),rP={provide:nP,deps:[Pw],useFactory:function(t){return function(){return t.scrollStrategies.reposition()}}},aP=function t(e,n){_(this,t),this.source=e,this.value=n},oP=CM(DM(SM(LM((function t(e,n,i,r,a){_(this,t),this._elementRef=e,this._defaultErrorStateMatcher=n,this._parentForm=i,this._parentFormGroup=r,this.ngControl=a}))))),sP=new se("MatSelectTrigger"),lP=function(){var t=function t(){_(this,t)};return t.\u0275fac=function(e){return new(e||t)},t.\u0275dir=Ve({type:t,selectors:[["mat-select-trigger"]],features:[Cl([{provide:sP,useExisting:t}])]}),t}(),uP=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,o,s,l,c,d,h,f,p,m,g,v){var y;return _(this,n),(y=e.call(this,s,o,c,d,f))._viewportRuler=t,y._changeDetectorRef=i,y._ngZone=r,y._dir=l,y._parentFormField=h,y.ngControl=f,y._liveAnnouncer=g,y._panelOpen=!1,y._required=!1,y._scrollTop=0,y._multiple=!1,y._compareWith=function(t,e){return t===e},y._uid="mat-select-".concat(eP++),y._destroy=new W,y._triggerFontSize=0,y._onChange=function(){},y._onTouched=function(){},y._optionIds="",y._transformOrigin="top",y._panelDoneAnimatingStream=new W,y._offsetY=0,y._positions=[{originX:"start",originY:"top",overlayX:"start",overlayY:"top"},{originX:"start",originY:"bottom",overlayX:"start",overlayY:"bottom"}],y._disableOptionCentering=!1,y._focused=!1,y.controlType="mat-select",y.ariaLabel="",y.optionSelectionChanges=ov((function(){var t=y.options;return t?t.changes.pipe(Yv(t),Pv((function(){return ft.apply(void 0,u(t.map((function(t){return t.onSelectionChange}))))}))):y._ngZone.onStable.asObservable().pipe(wv(1),Pv((function(){return y.optionSelectionChanges})))})),y.openedChange=new Ou,y._openedStream=y.openedChange.pipe(gg((function(t){return t})),nt((function(){}))),y._closedStream=y.openedChange.pipe(gg((function(t){return!t})),nt((function(){}))),y.selectionChange=new Ou,y.valueChange=new Ou,y.ngControl&&(y.ngControl.valueAccessor=a(y)),y._scrollStrategyFactory=m,y._scrollStrategy=y._scrollStrategyFactory(),y.tabIndex=parseInt(p)||0,y.id=y.id,v&&(null!=v.disableOptionCentering&&(y.disableOptionCentering=v.disableOptionCentering),null!=v.typeaheadDebounceInterval&&(y.typeaheadDebounceInterval=v.typeaheadDebounceInterval)),y}return b(n,[{key:"ngOnInit",value:function(){var t=this;this._selectionModel=new Nk(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe(lk(),yk(this._destroy)).subscribe((function(){t.panelOpen?(t._scrollTop=0,t.openedChange.emit(!0)):(t.openedChange.emit(!1),t.overlayDir.offsetX=0,t._changeDetectorRef.markForCheck())})),this._viewportRuler.change().pipe(yk(this._destroy)).subscribe((function(){t._panelOpen&&(t._triggerRect=t.trigger.nativeElement.getBoundingClientRect(),t._changeDetectorRef.markForCheck())}))}},{key:"ngAfterContentInit",value:function(){var t=this;this._initKeyManager(),this._selectionModel.changed.pipe(yk(this._destroy)).subscribe((function(t){t.added.forEach((function(t){return t.select()})),t.removed.forEach((function(t){return t.deselect()}))})),this.options.changes.pipe(Yv(null),yk(this._destroy)).subscribe((function(){t._resetOptions(),t._initializeSelection()}))}},{key:"ngDoCheck",value:function(){this.ngControl&&this.updateErrorState()}},{key:"ngOnChanges",value:function(t){t.disabled&&this.stateChanges.next(),t.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this._typeaheadDebounceInterval)}},{key:"ngOnDestroy",value:function(){this._destroy.next(),this._destroy.complete(),this.stateChanges.complete()}},{key:"toggle",value:function(){this.panelOpen?this.close():this.open()}},{key:"open",value:function(){var t=this;!this.disabled&&this.options&&this.options.length&&!this._panelOpen&&(this._triggerRect=this.trigger.nativeElement.getBoundingClientRect(),this._triggerFontSize=parseInt(getComputedStyle(this.trigger.nativeElement).fontSize||"0"),this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._calculateOverlayPosition(),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck(),this._ngZone.onStable.asObservable().pipe(wv(1)).subscribe((function(){t._triggerFontSize&&t.overlayDir.overlayRef&&t.overlayDir.overlayRef.overlayElement&&(t.overlayDir.overlayRef.overlayElement.style.fontSize="".concat(t._triggerFontSize,"px"))})))}},{key:"close",value:function(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched())}},{key:"writeValue",value:function(t){this.options&&this._setSelectionByValue(t)}},{key:"registerOnChange",value:function(t){this._onChange=t}},{key:"registerOnTouched",value:function(t){this._onTouched=t}},{key:"setDisabledState",value:function(t){this.disabled=t,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}},{key:"_isRtl",value:function(){return!!this._dir&&"rtl"===this._dir.value}},{key:"_handleKeydown",value:function(t){this.disabled||(this.panelOpen?this._handleOpenKeydown(t):this._handleClosedKeydown(t))}},{key:"_handleClosedKeydown",value:function(t){var e=t.keyCode,n=40===e||38===e||37===e||39===e,i=13===e||32===e,r=this._keyManager;if(!r.isTyping()&&i&&!iw(t)||(this.multiple||t.altKey)&&n)t.preventDefault(),this.open();else if(!this.multiple){var a=this.selected;36===e||35===e?(36===e?r.setFirstItemActive():r.setLastItemActive(),t.preventDefault()):r.onKeydown(t);var o=this.selected;o&&a!==o&&this._liveAnnouncer.announce(o.viewValue,1e4)}}},{key:"_handleOpenKeydown",value:function(t){var e=this._keyManager,n=t.keyCode,i=40===n||38===n,r=e.isTyping();if(36===n||35===n)t.preventDefault(),36===n?e.setFirstItemActive():e.setLastItemActive();else if(i&&t.altKey)t.preventDefault(),this.close();else if(r||13!==n&&32!==n||!e.activeItem||iw(t))if(!r&&this._multiple&&65===n&&t.ctrlKey){t.preventDefault();var a=this.options.some((function(t){return!t.disabled&&!t.selected}));this.options.forEach((function(t){t.disabled||(a?t.select():t.deselect())}))}else{var o=e.activeItemIndex;e.onKeydown(t),this._multiple&&i&&t.shiftKey&&e.activeItem&&e.activeItemIndex!==o&&e.activeItem._selectViaInteraction()}else t.preventDefault(),e.activeItem._selectViaInteraction()}},{key:"_onFocus",value:function(){this.disabled||(this._focused=!0,this.stateChanges.next())}},{key:"_onBlur",value:function(){this._focused=!1,this.disabled||this.panelOpen||(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}},{key:"_onAttached",value:function(){var t=this;this.overlayDir.positionChange.pipe(wv(1)).subscribe((function(){t._changeDetectorRef.detectChanges(),t._calculateOverlayOffsetX(),t.panel.nativeElement.scrollTop=t._scrollTop}))}},{key:"_getPanelTheme",value:function(){return this._parentFormField?"mat-".concat(this._parentFormField.color):""}},{key:"_initializeSelection",value:function(){var t=this;Promise.resolve().then((function(){t._setSelectionByValue(t.ngControl?t.ngControl.value:t._value),t.stateChanges.next()}))}},{key:"_setSelectionByValue",value:function(t){var e=this;if(this.multiple&&t){if(!Array.isArray(t))throw Error("Value must be an array in multiple-selection mode.");this._selectionModel.clear(),t.forEach((function(t){return e._selectValue(t)})),this._sortValues()}else{this._selectionModel.clear();var n=this._selectValue(t);n?this._keyManager.updateActiveItem(n):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}},{key:"_selectValue",value:function(t){var e=this,n=this.options.find((function(n){try{return null!=n.value&&e._compareWith(n.value,t)}catch(i){return ir()&&console.warn(i),!1}}));return n&&this._selectionModel.select(n),n}},{key:"_initKeyManager",value:function(){var t=this;this._keyManager=new Qw(this.options).withTypeAhead(this._typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withAllowedModifierKeys(["shiftKey"]),this._keyManager.tabOut.pipe(yk(this._destroy)).subscribe((function(){t.panelOpen&&(!t.multiple&&t._keyManager.activeItem&&t._keyManager.activeItem._selectViaInteraction(),t.focus(),t.close())})),this._keyManager.change.pipe(yk(this._destroy)).subscribe((function(){t._panelOpen&&t.panel?t._scrollActiveOptionIntoView():t._panelOpen||t.multiple||!t._keyManager.activeItem||t._keyManager.activeItem._selectViaInteraction()}))}},{key:"_resetOptions",value:function(){var t=this,e=ft(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(yk(e)).subscribe((function(e){t._onSelect(e.source,e.isUserInput),e.isUserInput&&!t.multiple&&t._panelOpen&&(t.close(),t.focus())})),ft.apply(void 0,u(this.options.map((function(t){return t._stateChanges})))).pipe(yk(e)).subscribe((function(){t._changeDetectorRef.markForCheck(),t.stateChanges.next()})),this._setOptionIds()}},{key:"_onSelect",value:function(t,e){var n=this._selectionModel.isSelected(t);null!=t.value||this._multiple?(n!==t.selected&&(t.selected?this._selectionModel.select(t):this._selectionModel.deselect(t)),e&&this._keyManager.setActiveItem(t),this.multiple&&(this._sortValues(),e&&this.focus())):(t.deselect(),this._selectionModel.clear(),this._propagateChanges(t.value)),n!==this._selectionModel.isSelected(t)&&this._propagateChanges(),this.stateChanges.next()}},{key:"_sortValues",value:function(){var t=this;if(this.multiple){var e=this.options.toArray();this._selectionModel.sort((function(n,i){return t.sortComparator?t.sortComparator(n,i,e):e.indexOf(n)-e.indexOf(i)})),this.stateChanges.next()}}},{key:"_propagateChanges",value:function(t){var e;e=this.multiple?this.selected.map((function(t){return t.value})):this.selected?this.selected.value:t,this._value=e,this.valueChange.emit(e),this._onChange(e),this.selectionChange.emit(new aP(this,e)),this._changeDetectorRef.markForCheck()}},{key:"_setOptionIds",value:function(){this._optionIds=this.options.map((function(t){return t.id})).join(" ")}},{key:"_highlightCorrectOption",value:function(){this._keyManager&&(this.empty?this._keyManager.setFirstItemActive():this._keyManager.setActiveItem(this._selectionModel.selected[0]))}},{key:"_scrollActiveOptionIntoView",value:function(){var t,e,n,i=this._keyManager.activeItemIndex||0,r=XM(i,this.options,this.optionGroups);this.panel.nativeElement.scrollTop=(n=(i+r)*(t=this._getItemHeight()))<(e=this.panel.nativeElement.scrollTop)?n:n+t>e+256?Math.max(0,n-256+t):e}},{key:"focus",value:function(t){this._elementRef.nativeElement.focus(t)}},{key:"_getOptionIndex",value:function(t){return this.options.reduce((function(e,n,i){return void 0!==e?e:t===n?i:void 0}),void 0)}},{key:"_calculateOverlayPosition",value:function(){var t=this._getItemHeight(),e=this._getItemCount(),n=Math.min(e*t,256),i=e*t-n,r=this.empty?0:this._getOptionIndex(this._selectionModel.selected[0]);r+=XM(r,this.options,this.optionGroups);var a=n/2;this._scrollTop=this._calculateOverlayScroll(r,a,i),this._offsetY=this._calculateOverlayOffsetY(r,a,i),this._checkOverlayWithinViewport(i)}},{key:"_calculateOverlayScroll",value:function(t,e,n){var i=this._getItemHeight();return Math.min(Math.max(0,i*t-e+i/2),n)}},{key:"_getAriaLabel",value:function(){return this.ariaLabelledby?null:this.ariaLabel||this.placeholder}},{key:"_getAriaLabelledby",value:function(){return this.ariaLabelledby?this.ariaLabelledby:this._parentFormField&&this._parentFormField._hasFloatingLabel()&&!this._getAriaLabel()&&this._parentFormField._labelId||null}},{key:"_getAriaActiveDescendant",value:function(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}},{key:"_calculateOverlayOffsetX",value:function(){var t,e=this.overlayDir.overlayRef.overlayElement.getBoundingClientRect(),n=this._viewportRuler.getViewportSize(),i=this._isRtl(),r=this.multiple?56:32;if(this.multiple)t=40;else{var a=this._selectionModel.selected[0]||this.options.first;t=a&&a.group?32:16}i||(t*=-1);var o=0-(e.left+t-(i?r:0)),s=e.right+t-n.width+(i?0:r);o>0?t+=o+8:s>0&&(t-=s+8),this.overlayDir.offsetX=Math.round(t),this.overlayDir.overlayRef.updatePosition()}},{key:"_calculateOverlayOffsetY",value:function(t,e,n){var i,r=this._getItemHeight(),a=(r-this._triggerRect.height)/2,o=Math.floor(256/r);return this._disableOptionCentering?0:(i=0===this._scrollTop?t*r:this._scrollTop===n?(t-(this._getItemCount()-o))*r+(r-(this._getItemCount()*r-256)%r):e-r/2,Math.round(-1*i-a))}},{key:"_checkOverlayWithinViewport",value:function(t){var e=this._getItemHeight(),n=this._viewportRuler.getViewportSize(),i=this._triggerRect.top-8,r=n.height-this._triggerRect.bottom-8,a=Math.abs(this._offsetY),o=Math.min(this._getItemCount()*e,256)-a-this._triggerRect.height;o>r?this._adjustPanelUp(o,r):a>i?this._adjustPanelDown(a,i,t):this._transformOrigin=this._getOriginBasedOnOption()}},{key:"_adjustPanelUp",value:function(t,e){var n=Math.round(t-e);this._scrollTop-=n,this._offsetY-=n,this._transformOrigin=this._getOriginBasedOnOption(),this._scrollTop<=0&&(this._scrollTop=0,this._offsetY=0,this._transformOrigin="50% bottom 0px")}},{key:"_adjustPanelDown",value:function(t,e,n){var i=Math.round(t-e);if(this._scrollTop+=i,this._offsetY+=i,this._transformOrigin=this._getOriginBasedOnOption(),this._scrollTop>=n)return this._scrollTop=n,this._offsetY=0,void(this._transformOrigin="50% top 0px")}},{key:"_getOriginBasedOnOption",value:function(){var t=this._getItemHeight(),e=(t-this._triggerRect.height)/2,n=Math.abs(this._offsetY)-e+t/2;return"50% ".concat(n,"px 0px")}},{key:"_getItemCount",value:function(){return this.options.length+this.optionGroups.length}},{key:"_getItemHeight",value:function(){return 3*this._triggerFontSize}},{key:"setDescribedByIds",value:function(t){this._ariaDescribedby=t.join(" ")}},{key:"onContainerClick",value:function(){this.focus(),this.open()}},{key:"focused",get:function(){return this._focused||this._panelOpen}},{key:"placeholder",get:function(){return this._placeholder},set:function(t){this._placeholder=t,this.stateChanges.next()}},{key:"required",get:function(){return this._required},set:function(t){this._required=Jb(t),this.stateChanges.next()}},{key:"multiple",get:function(){return this._multiple},set:function(t){if(this._selectionModel)throw Error("Cannot change `multiple` mode of select after initialization.");this._multiple=Jb(t)}},{key:"disableOptionCentering",get:function(){return this._disableOptionCentering},set:function(t){this._disableOptionCentering=Jb(t)}},{key:"compareWith",get:function(){return this._compareWith},set:function(t){if("function"!=typeof t)throw Error("`compareWith` must be a function.");this._compareWith=t,this._selectionModel&&this._initializeSelection()}},{key:"value",get:function(){return this._value},set:function(t){t!==this._value&&(this.writeValue(t),this._value=t)}},{key:"typeaheadDebounceInterval",get:function(){return this._typeaheadDebounceInterval},set:function(t){this._typeaheadDebounceInterval=Zb(t)}},{key:"id",get:function(){return this._id},set:function(t){this._id=t||this._uid,this.stateChanges.next()}},{key:"panelOpen",get:function(){return this._panelOpen}},{key:"selected",get:function(){return this.multiple?this._selectionModel.selected:this._selectionModel.selected[0]}},{key:"triggerValue",get:function(){if(this.empty)return"";if(this._multiple){var t=this._selectionModel.selected.map((function(t){return t.viewValue}));return this._isRtl()&&t.reverse(),t.join(", ")}return this._selectionModel.selected[0].viewValue}},{key:"empty",get:function(){return!this._selectionModel||this._selectionModel.isEmpty()}},{key:"shouldLabelFloat",get:function(){return this._panelOpen||!this.empty}}]),n}(oP);return t.\u0275fac=function(e){return new(e||t)(rs(Bk),rs(xo),rs(Mc),rs(EM),rs(Pl),rs(Yk,8),rs(PD,8),rs(UD,8),rs(ST,8),rs(LC,10),as("tabindex"),rs(nP),rs(sM),rs(iP,8))},t.\u0275cmp=Fe({type:t,selectors:[["mat-select"]],contentQueries:function(t,e,n){var i;1&t&&(Gu(n,sP,!0),Gu(n,QM,!0),Gu(n,qM,!0)),2&t&&(zu(i=Zu())&&(e.customTrigger=i.first),zu(i=Zu())&&(e.options=i),zu(i=Zu())&&(e.optionGroups=i))},viewQuery:function(t,e){var n;1&t&&(Uu(UE,!0),Uu(qE,!0),Uu(Yw,!0)),2&t&&(zu(n=Zu())&&(e.trigger=n.first),zu(n=Zu())&&(e.panel=n.first),zu(n=Zu())&&(e.overlayDir=n.first))},hostAttrs:["role","listbox",1,"mat-select"],hostVars:19,hostBindings:function(t,e){1&t&&vs("keydown",(function(t){return e._handleKeydown(t)}))("focus",(function(){return e._onFocus()}))("blur",(function(){return e._onBlur()})),2&t&&(ts("id",e.id)("tabindex",e.tabIndex)("aria-label",e._getAriaLabel())("aria-labelledby",e._getAriaLabelledby())("aria-required",e.required.toString())("aria-disabled",e.disabled.toString())("aria-invalid",e.errorState)("aria-owns",e.panelOpen?e._optionIds:null)("aria-multiselectable",e.multiple)("aria-describedby",e._ariaDescribedby||null)("aria-activedescendant",e._getAriaActiveDescendant()),Vs("mat-select-disabled",e.disabled)("mat-select-invalid",e.errorState)("mat-select-required",e.required)("mat-select-empty",e.empty))},inputs:{disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex",ariaLabel:["aria-label","ariaLabel"],id:"id",disableOptionCentering:"disableOptionCentering",typeaheadDebounceInterval:"typeaheadDebounceInterval",placeholder:"placeholder",required:"required",multiple:"multiple",compareWith:"compareWith",value:"value",panelClass:"panelClass",ariaLabelledby:["aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",sortComparator:"sortComparator"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},exportAs:["matSelect"],features:[Cl([{provide:cT,useExisting:t},{provide:$M,useExisting:t}]),fl,en],ngContentSelectors:XE,decls:9,vars:9,consts:[["cdk-overlay-origin","","aria-hidden","true",1,"mat-select-trigger",3,"click"],["origin","cdkOverlayOrigin","trigger",""],[1,"mat-select-value",3,"ngSwitch"],["class","mat-select-placeholder",4,"ngSwitchCase"],["class","mat-select-value-text",3,"ngSwitch",4,"ngSwitchCase"],[1,"mat-select-arrow-wrapper"],[1,"mat-select-arrow"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayMinWidth","cdkConnectedOverlayOffsetY","backdropClick","attach","detach"],[1,"mat-select-placeholder"],[1,"mat-select-value-text",3,"ngSwitch"],[4,"ngSwitchDefault"],[4,"ngSwitchCase"],[1,"mat-select-panel-wrap"],[3,"ngClass","keydown"],["panel",""]],template:function(t,e){if(1&t&&(xs(QE),ls(0,"div",0,1),vs("click",(function(){return e.toggle()})),ls(3,"div",2),ns(4,GE,2,1,"span",3),ns(5,ZE,3,2,"span",4),us(),ls(6,"div",5),cs(7,"div",6),us(),us(),ns(8,$E,4,11,"ng-template",7),vs("backdropClick",(function(){return e.close()}))("attach",(function(){return e._onAttached()}))("detach",(function(){return e.close()}))),2&t){var n=is(1);Gr(3),os("ngSwitch",e.empty),Gr(1),os("ngSwitchCase",!0),Gr(1),os("ngSwitchCase",!1),Gr(3),os("cdkConnectedOverlayScrollStrategy",e._scrollStrategy)("cdkConnectedOverlayOrigin",n)("cdkConnectedOverlayOpen",e.panelOpen)("cdkConnectedOverlayPositions",e._positions)("cdkConnectedOverlayMinWidth",null==e._triggerRect?null:e._triggerRect.width)("cdkConnectedOverlayOffsetY",e._offsetY)}},directives:[Iw,Ch,Dh,Yw,Lh,vh],styles:[".mat-select{display:inline-block;width:100%;outline:none}.mat-select-trigger{display:inline-table;cursor:pointer;position:relative;box-sizing:border-box}.mat-select-disabled .mat-select-trigger{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.mat-select-value{display:table-cell;max-width:0;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-select-arrow-wrapper{display:table-cell;vertical-align:middle}.mat-form-field-appearance-fill .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-outline .mat-select-arrow-wrapper{transform:translateY(-25%)}.mat-form-field-appearance-standard.mat-form-field-has-label .mat-select:not(.mat-select-empty) .mat-select-arrow-wrapper{transform:translateY(-50%)}.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:transform 400ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable.mat-form-field-appearance-standard .mat-select.mat-select-empty .mat-select-arrow-wrapper{transition:none}.mat-select-arrow{width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid;margin:0 4px}.mat-select-panel-wrap{flex-basis:100%}.mat-select-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;padding-top:0;padding-bottom:0;max-height:256px;min-width:100%;border-radius:4px}.cdk-high-contrast-active .mat-select-panel{outline:solid 1px}.mat-select-panel .mat-optgroup-label,.mat-select-panel .mat-option{font-size:inherit;line-height:3em;height:3em}.mat-form-field-type-mat-select:not(.mat-form-field-disabled) .mat-form-field-flex{cursor:pointer}.mat-form-field-type-mat-select .mat-form-field-label{width:calc(100% - 18px)}.mat-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-select-placeholder{color:transparent;-webkit-text-fill-color:transparent;transition:none;display:block}\n"],encapsulation:2,data:{animation:[tP.transformPanelWrap,tP.transformPanel]},changeDetection:0}),t}(),cP=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[rP],imports:[[rf,Rw,eS,MM],Vk,CT,eS,MM]}),t}();function dP(t,e){if(1&t&&(cs(0,"input",7),Du(1,"translate")),2&t){var n=Ms().$implicit;os("formControlName",n.keyNameInFiltersObject)("maxlength",n.maxlength)("placeholder",Lu(1,3,n.filterName))}}function hP(t,e){if(1&t&&(ls(0,"mat-option",10),rl(1),Du(2,"translate"),us()),2&t){var n=e.$implicit;os("value",n.value),Gr(1),al(Lu(2,2,n.label))}}function fP(t,e){if(1&t&&(ls(0,"mat-select",8),Du(1,"translate"),ns(2,hP,3,4,"mat-option",9),us()),2&t){var n=Ms().$implicit;os("formControlName",n.keyNameInFiltersObject)("placeholder",Lu(1,3,n.filterName)),Gr(2),os("ngForOf",n.printableLabelsForValues)}}function pP(t,e){if(1&t&&(ds(0),ls(1,"mat-form-field"),ns(2,dP,2,5,"input",5),ns(3,fP,3,5,"mat-select",6),us(),hs()),2&t){var n=e.$implicit,i=Ms();Gr(2),os("ngIf",n.type===i.filterFieldTypes.TextInput),Gr(1),os("ngIf",n.type===i.filterFieldTypes.Select)}}var mP=function(){function t(t,e,n){this.data=t,this.dialogRef=e,this.formBuilder=n,this.filterFieldTypes=TE}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.smallModalWidth,e.open(t,i)},t.prototype.ngOnInit=function(){var t=this,e={};this.data.filterPropertiesList.forEach((function(n){e[n.keyNameInFiltersObject]=[t.data.currentFilters[n.keyNameInFiltersObject]]})),this.form=this.formBuilder.group(e)},t.prototype.apply=function(){var t=this,e={};this.data.filterPropertiesList.forEach((function(n){e[n.keyNameInFiltersObject]=t.form.get(n.keyNameInFiltersObject).value.trim()})),this.dialogRef.close(e)},t.\u0275fac=function(e){return new(e||t)(rs(Fx),rs(Ix),rs(pL))},t.\u0275cmp=Fe({type:t,selectors:[["app-filters-selection"]],decls:8,vars:8,consts:[[3,"headline"],[3,"formGroup"],[4,"ngFor","ngForOf"],["color","primary",1,"float-right",3,"action"],["button",""],["matInput","",3,"formControlName","maxlength","placeholder",4,"ngIf"],[3,"formControlName","placeholder",4,"ngIf"],["matInput","",3,"formControlName","maxlength","placeholder"],[3,"formControlName","placeholder"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"form",1),ns(3,pP,4,2,"ng-container",2),ls(4,"app-button",3,4),vs("action",(function(){return e.apply()})),rl(6),Du(7,"translate"),us(),us(),us()),2&t&&(os("headline",Lu(1,4,"filters.filter-action")),Gr(2),os("formGroup",e.form),Gr(1),os("ngForOf",e.data.filterPropertiesList),Gr(3),ol(" ",Lu(7,6,"common.ok")," "))},directives:[xL,jD,PC,UD,bh,AL,xT,wh,NT,MC,EC,QD,uL,uP,QM],pipes:[px],styles:[""]}),t}(),gP=function(){function t(t,e,n,i,r){var a=this;this.dialog=t,this.route=e,this.router=n,this.currentFiltersTextsInternal=[],this.dataUpdatedSubject=new W,this.filterPropertiesList=i,this.currentFilters={},this.filterPropertiesList.forEach((function(t){t.keyNameInFiltersObject=r+"_"+t.keyNameInElementsArray,a.currentFilters[t.keyNameInFiltersObject]=""})),this.navigationsSubscription=this.route.queryParamMap.subscribe((function(t){Object.keys(a.currentFilters).forEach((function(e){t.has(e)&&(a.currentFilters[e]=t.get(e))})),a.currentUrlQueryParamsInternal={},t.keys.forEach((function(e){a.currentUrlQueryParamsInternal[e]=t.get(e)})),a.filter()}))}return Object.defineProperty(t.prototype,"currentFiltersTexts",{get:function(){return this.currentFiltersTextsInternal},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"currentUrlQueryParams",{get:function(){return this.currentUrlQueryParamsInternal},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"dataFiltered",{get:function(){return this.dataUpdatedSubject.asObservable()},enumerable:!1,configurable:!0}),t.prototype.dispose=function(){this.dataUpdatedSubject.complete(),this.navigationsSubscription.unsubscribe()},t.prototype.setData=function(t){this.data=t,this.filter()},t.prototype.removeFilters=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"filters.remove-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.componentInstance.closeModal(),t.router.navigate([],{queryParams:{}})}))},t.prototype.changeFilters=function(){var t=this;mP.openDialog(this.dialog,{filterPropertiesList:this.filterPropertiesList,currentFilters:this.currentFilters}).afterClosed().subscribe((function(e){e&&t.router.navigate([],{queryParams:e})}))},t.prototype.filter=function(){var t=this;if(this.data){var e=void 0,n=!1;Object.keys(this.currentFilters).forEach((function(e){t.currentFilters[e]&&(n=!0)})),n?(e=function(t,e,n){if(t){var i=[];return Object.keys(e).forEach((function(t){if(e[t])for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;return Math.max(e,Math.min(n,t))}var SP=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[rf,MM],MM]}),t}();function xP(t,e){1&t&&(ds(0),cs(1,"mat-spinner",7),rl(2),Du(3,"translate"),hs()),2&t&&(Gr(1),os("diameter",12),Gr(1),ol(" ",Lu(3,2,"update.processing")," "))}function CP(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms();Gr(1),ol(" ",Lu(2,1,n.errorText)," ")}}function DP(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms();Gr(1),ol(" ",Lu(2,1,1===n.data.length?"update.no-update":"update.no-updates")," ")}}function LP(t,e){if(1&t&&(ls(0,"div",8),ls(1,"div",9),ls(2,"div",10),rl(3,"-"),us(),ls(4,"div",11),rl(5),Du(6,"translate"),us(),us(),us()),2&t){var n=Ms();Gr(5),al(n.currentNodeVersion?n.currentNodeVersion:Lu(6,1,"common.unknown"))}}function TP(t,e){if(1&t&&(ls(0,"div",9),ls(1,"div",10),rl(2,"-"),us(),ls(3,"div",11),rl(4),us(),us()),2&t){var n=e.$implicit,i=Ms(2);Gr(4),al(i.nodesToUpdate[n].label)}}function EP(t,e){if(1&t&&(ds(0),ls(1,"div",1),rl(2),Du(3,"translate"),us(),ls(4,"div",8),ns(5,TP,5,1,"div",12),us(),hs()),2&t){var n=Ms();Gr(2),ol(" ",Lu(3,2,"update.already-updating")," "),Gr(3),os("ngForOf",n.indexesAlreadyBeingUpdated)}}function PP(t,e){if(1&t&&(ls(0,"span",15),rl(1),Du(2,"translate"),us()),2&t){var n=Ms(3);Gr(1),sl("",Lu(2,2,"update.selected-channel")," ",n.customChannel,"")}}function OP(t,e){if(1&t&&(ls(0,"div",9),ls(1,"div",10),rl(2,"-"),us(),ls(3,"div",11),rl(4),Du(5,"translate"),ls(6,"a",13),rl(7),us(),ns(8,PP,3,4,"span",14),us(),us()),2&t){var n=e.$implicit,i=Ms(2);Gr(4),ol(" ",Tu(5,4,"update.version-change",n)," "),Gr(2),os("href",n.updateLink,Dr),Gr(1),al(n.updateLink),Gr(1),os("ngIf",i.customChannel)}}var AP=function(t){return{number:t}};function IP(t,e){if(1&t&&(ds(0),ls(1,"div",1),rl(2),Du(3,"translate"),us(),ls(4,"div",8),ns(5,OP,9,7,"div",12),us(),ls(6,"div",1),rl(7),Du(8,"translate"),us(),hs()),2&t){var n=Ms();Gr(2),ol(" ",Tu(3,3,n.updateAvailableText,wu(8,AP,n.nodesForUpdatesFound))," "),Gr(3),os("ngForOf",n.updatesFound),Gr(2),ol(" ",Lu(8,6,"update.update-instructions")," ")}}function YP(t,e){1&t&&cs(0,"mat-spinner",7),2&t&&os("diameter",12)}function FP(t,e){1&t&&(ls(0,"span",21),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),ol("\xa0(",Lu(2,1,"update.finished"),")"))}function RP(t,e){if(1&t&&(ls(0,"div",8),ls(1,"div",9),ls(2,"div",10),rl(3,"-"),us(),ls(4,"div",11),ns(5,YP,1,1,"mat-spinner",18),rl(6),ls(7,"span",19),rl(8),us(),ns(9,FP,3,3,"span",20),us(),us(),us()),2&t){var n=Ms(2).$implicit;Gr(5),os("ngIf",!n.updateProgressInfo.closed),Gr(1),ol(" ",n.label," : "),Gr(2),al(n.updateProgressInfo.rawMsg),Gr(1),os("ngIf",n.updateProgressInfo.closed)}}function NP(t,e){1&t&&cs(0,"mat-spinner",7),2&t&&os("diameter",12)}function HP(t,e){1&t&&(ds(0),cs(1,"br"),ls(2,"span",21),rl(3),Du(4,"translate"),us(),hs()),2&t&&(Gr(3),al(Lu(4,1,"update.finished")))}function jP(t,e){if(1&t&&(ls(0,"div",22),ls(1,"div",23),ns(2,NP,1,1,"mat-spinner",18),rl(3),us(),cs(4,"mat-progress-bar",24),ls(5,"div",19),rl(6),Du(7,"translate"),cs(8,"br"),rl(9),Du(10,"translate"),cs(11,"br"),rl(12),Du(13,"translate"),Du(14,"translate"),ns(15,HP,5,3,"ng-container",2),us(),us()),2&t){var n=Ms(2).$implicit;Gr(2),os("ngIf",!n.updateProgressInfo.closed),Gr(1),ol(" ",n.label," "),Gr(1),os("mode","determinate")("value",n.updateProgressInfo.progress),Gr(2),ll(" ",Lu(7,14,"update.downloaded-file-name-prefix")," ",n.updateProgressInfo.fileName," (",n.updateProgressInfo.progress,"%) "),Gr(3),sl(" ",Lu(10,16,"update.speed-prefix")," ",n.updateProgressInfo.speed," "),Gr(3),ul(" ",Lu(13,18,"update.time-downloading-prefix")," ",n.updateProgressInfo.elapsedTime," / ",Lu(14,20,"update.time-left-prefix")," ",n.updateProgressInfo.remainingTime," "),Gr(3),os("ngIf",n.updateProgressInfo.closed)}}function BP(t,e){if(1&t&&(ls(0,"div",8),ls(1,"div",9),ls(2,"div",10),rl(3,"-"),us(),ls(4,"div",11),rl(5),ls(6,"span",25),rl(7),Du(8,"translate"),us(),us(),us(),us()),2&t){var n=Ms(2).$implicit;Gr(5),ol(" ",n.label,": "),Gr(2),al(Lu(8,2,n.updateProgressInfo.errorMsg))}}function VP(t,e){if(1&t&&(ds(0),ns(1,RP,10,4,"div",3),ns(2,jP,16,22,"div",17),ns(3,BP,9,4,"div",3),hs()),2&t){var n=Ms().$implicit;Gr(1),os("ngIf",!n.updateProgressInfo.errorMsg&&!n.updateProgressInfo.dataParsed),Gr(1),os("ngIf",!n.updateProgressInfo.errorMsg&&n.updateProgressInfo.dataParsed),Gr(1),os("ngIf",n.updateProgressInfo.errorMsg)}}function zP(t,e){if(1&t&&(ds(0),ns(1,VP,4,3,"ng-container",2),hs()),2&t){var n=e.$implicit;Gr(1),os("ngIf",n.update)}}function WP(t,e){if(1&t&&(ds(0),ls(1,"div",1),rl(2),Du(3,"translate"),us(),ls(4,"div"),ns(5,zP,2,1,"ng-container",16),us(),hs()),2&t){var n=Ms();Gr(2),ol(" ",Lu(3,2,"update.updating")," "),Gr(3),os("ngForOf",n.nodesToUpdate)}}function UP(t,e){if(1&t){var n=ps();ls(0,"app-button",26,27),vs("action",(function(){return Cn(n),Ms().closeModal()})),rl(2),Du(3,"translate"),us()}if(2&t){var i=Ms();Gr(2),ol(" ",Lu(3,1,i.cancelButtonText)," ")}}function qP(t,e){if(1&t){var n=ps();ls(0,"app-button",28,29),vs("action",(function(){Cn(n);var t=Ms();return t.state===t.updatingStates.Asking?t.update():t.closeModal()})),rl(2),Du(3,"translate"),us()}if(2&t){var i=Ms();Gr(2),ol(" ",Lu(3,1,i.confirmButtonText)," ")}}var GP=function(t){return t.InitialProcessing="InitialProcessing",t.NoUpdatesFound="NoUpdatesFound",t.Asking="Asking",t.Updating="Updating",t.Error="Error",t}({}),KP=function(){return function(){this.errorMsg="",this.rawMsg="",this.dataParsed=!1,this.fileName="",this.progress=100,this.speed="",this.elapsedTime="",this.remainingTime="",this.closed=!1}}(),JP=function(){function t(t,e,n,i,r,a){this.dialogRef=t,this.data=e,this.nodeService=n,this.storageService=i,this.translateService=r,this.changeDetectorRef=a,this.state=GP.InitialProcessing,this.cancelButtonText="common.cancel",this.indexesAlreadyBeingUpdated=[],this.customChannel=localStorage.getItem(hE.Channel),this.updatingStates=GP}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.smallModalWidth,e.open(t,i)},t.prototype.ngAfterViewInit=function(){this.startChecking()},t.prototype.startChecking=function(){var t=this;this.nodesToUpdate=[],this.data.forEach((function(e){t.nodesToUpdate.push({key:e.key,label:e.label?e.label:t.storageService.getDefaultLabel(e.key),update:!1,updateProgressInfo:new KP}),t.nodesToUpdate[t.nodesToUpdate.length-1].updateProgressInfo.rawMsg=t.translateService.instant("update.starting")})),this.subscription=ES(this.data.map((function(e){return t.nodeService.checkIfUpdating(e.key)}))).subscribe((function(e){e.forEach((function(e,n){e.running&&(t.indexesAlreadyBeingUpdated.push(n),t.nodesToUpdate[n].update=!0)})),t.indexesAlreadyBeingUpdated.length===t.data.length?t.update():t.checkUpdates()}),(function(e){t.changeState(GP.Error),t.errorText=Mx(e).translatableErrorMsg}))},t.prototype.checkUpdates=function(){var t=this;this.nodesForUpdatesFound=0,this.updatesFound=[];var e=[];this.nodesToUpdate.forEach((function(t){t.update||e.push(t)})),this.subscription=ES(e.map((function(e){return t.nodeService.checkUpdate(e.key)}))).subscribe((function(n){var i=new Map;n.forEach((function(n,r){n&&n.available&&(t.nodesForUpdatesFound+=1,e[r].update=!0,i.has(n.current_version+n.available_version)||(t.updatesFound.push({currentVersion:n.current_version?n.current_version:t.translateService.instant("common.unknown"),newVersion:n.available_version,updateLink:n.release_url}),i.set(n.current_version+n.available_version,!0)))})),t.nodesForUpdatesFound>0?t.changeState(GP.Asking):0===t.indexesAlreadyBeingUpdated.length?(t.changeState(GP.NoUpdatesFound),1===t.data.length&&(t.currentNodeVersion=n[0].current_version)):t.update()}),(function(e){t.changeState(GP.Error),t.errorText=Mx(e).translatableErrorMsg}))},t.prototype.update=function(){var t=this;this.changeState(GP.Updating),this.progressSubscriptions=[],this.nodesToUpdate.forEach((function(e,n){e.update&&t.progressSubscriptions.push(t.nodeService.update(e.key).subscribe((function(n){t.updateProgressInfo(n.status,e.updateProgressInfo)}),(function(t){e.updateProgressInfo.errorMsg=Mx(t).translatableErrorMsg}),(function(){e.updateProgressInfo.closed=!0})))}))},Object.defineProperty(t.prototype,"updateAvailableText",{get:function(){if(1===this.data.length)return"update.update-available";var t="update.update-available";return this.indexesAlreadyBeingUpdated.length>0&&(t+="-additional"),t+(1===this.nodesForUpdatesFound?"-singular":"-plural")},enumerable:!1,configurable:!0}),t.prototype.updateProgressInfo=function(t,e){e.rawMsg=t,e.dataParsed=!1;var n=t.indexOf("Downloading"),i=t.lastIndexOf("("),r=t.lastIndexOf(")"),a=t.lastIndexOf("["),o=t.lastIndexOf("]"),s=t.lastIndexOf(":"),l=t.lastIndexOf("%");if(-1!==n&&-1!==i&&-1!==r&&-1!==a&&-1!==o&&-1!==s){var u=!1;i>r&&(u=!0),a>s&&(u=!0),s>o&&(u=!0),(l>i||l0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:dk;return(!mk(t)||t<0)&&(t=0),e&&"function"==typeof e.schedule||(e=dk),new H((function(n){return n.add(e.schedule(vP,t,{subscriber:n,counter:0,period:t})),n}))}(1e3).subscribe((function(){return e.changeDetectorRef.detectChanges()})))},t.\u0275fac=function(e){return new(e||t)(rs(Ix),rs(Fx),rs(fE),rs(Kb),rs(hx),rs(xo))},t.\u0275cmp=Fe({type:t,selectors:[["app-update"]],decls:13,vars:12,consts:[[3,"headline"],[1,"text-container"],[4,"ngIf"],["class","list-container",4,"ngIf"],[1,"buttons"],["type","mat-raised-button","color","accent",3,"action",4,"ngIf"],["type","mat-raised-button","color","primary",3,"action",4,"ngIf"],[1,"loading-indicator",3,"diameter"],[1,"list-container"],[1,"list-element"],[1,"left-part"],[1,"right-part"],["class","list-element",4,"ngFor","ngForOf"],["target","_blank","rel","noreferrer nofollow noopener",3,"href"],["class","channel",4,"ngIf"],[1,"channel"],[4,"ngFor","ngForOf"],["class","progress-container",4,"ngIf"],["class","loading-indicator",3,"diameter",4,"ngIf"],[1,"details"],["class","closed-indication",4,"ngIf"],[1,"closed-indication"],[1,"progress-container"],[1,"name"],["color","accent",3,"mode","value"],[1,"red-text"],["type","mat-raised-button","color","accent",3,"action"],["cancelButton",""],["type","mat-raised-button","color","primary",3,"action"],["confirmButton",""]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"div",1),ns(3,xP,4,4,"ng-container",2),ns(4,CP,3,3,"ng-container",2),ns(5,DP,3,3,"ng-container",2),us(),ns(6,LP,7,3,"div",3),ns(7,EP,6,4,"ng-container",2),ns(8,IP,9,10,"ng-container",2),ns(9,WP,6,4,"ng-container",2),ls(10,"div",4),ns(11,UP,4,3,"app-button",5),ns(12,qP,4,3,"app-button",6),us(),us()),2&t&&(os("headline",Lu(1,10,e.state!==e.updatingStates.Error?"update.title":"update.error-title")),Gr(3),os("ngIf",e.state===e.updatingStates.InitialProcessing),Gr(1),os("ngIf",e.state===e.updatingStates.Error),Gr(1),os("ngIf",e.state===e.updatingStates.NoUpdatesFound),Gr(1),os("ngIf",e.state===e.updatingStates.NoUpdatesFound&&1===e.data.length),Gr(1),os("ngIf",e.state===e.updatingStates.Asking&&e.indexesAlreadyBeingUpdated.length>0),Gr(1),os("ngIf",e.state===e.updatingStates.Asking),Gr(1),os("ngIf",e.state===e.updatingStates.Updating),Gr(2),os("ngIf",e.cancelButtonText),Gr(1),os("ngIf",e.confirmButtonText))},directives:[xL,wh,fC,bh,wP,AL],pipes:[px],styles:[".list-container[_ngcontent-%COMP%], .text-container[_ngcontent-%COMP%]{word-break:break-word}.list-container[_ngcontent-%COMP%]{font-size:14px;margin:10px;color:#215f9e}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%]{display:flex}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .left-part[_ngcontent-%COMP%]{width:12px;flex-grow:0;flex-shrink:0}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-part[_ngcontent-%COMP%]{flex-grow:1}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-part[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{text-decoration:none;color:#215f9e;font-size:.7rem;line-height:1;display:block}.list-container[_ngcontent-%COMP%] .list-element[_ngcontent-%COMP%] .right-part[_ngcontent-%COMP%] .channel[_ngcontent-%COMP%]{font-size:.7rem;line-height:1}.list-container[_ngcontent-%COMP%] .details[_ngcontent-%COMP%]{color:#777}.buttons[_ngcontent-%COMP%]{margin-top:15px;text-align:right}.buttons[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-left:5px}.progress-container[_ngcontent-%COMP%]{margin:10px 0}.progress-container[_ngcontent-%COMP%] .name[_ngcontent-%COMP%]{font-size:.7rem;color:#215f9e}.progress-container[_ngcontent-%COMP%] .mat-progress-bar-fill:after{background-color:#215f9e!important}.progress-container[_ngcontent-%COMP%] .details[_ngcontent-%COMP%]{font-size:.7rem;text-align:right;color:#777}.closed-indication[_ngcontent-%COMP%]{color:#d48b05}.loading-indicator[_ngcontent-%COMP%]{display:inline-block;position:relative;top:2px}"]}),t}(),ZP=["mat-menu-item",""],$P=["*"];function QP(t,e){if(1&t){var n=ps();ls(0,"div",0),vs("keydown",(function(t){return Cn(n),Ms()._handleKeydown(t)}))("click",(function(){return Cn(n),Ms().closed.emit("click")}))("@transformMenu.start",(function(t){return Cn(n),Ms()._onAnimationStart(t)}))("@transformMenu.done",(function(t){return Cn(n),Ms()._onAnimationDone(t)})),ls(1,"div",1),Cs(2),us(),us()}if(2&t){var i=Ms();os("id",i.panelId)("ngClass",i._classList)("@transformMenu",i._panelAnimationState),ts("aria-label",i.ariaLabel||null)("aria-labelledby",i.ariaLabelledby||null)("aria-describedby",i.ariaDescribedby||null)}}var XP={transformMenu:jf("transformMenu",[Uf("void",Wf({opacity:0,transform:"scale(0.8)"})),Gf("void => enter",Vf([Jf(".mat-menu-content, .mat-mdc-menu-content",Bf("100ms linear",Wf({opacity:1}))),Bf("120ms cubic-bezier(0, 0, 0.2, 1)",Wf({transform:"scale(1)"}))])),Gf("* => void",Bf("100ms 25ms linear",Wf({opacity:0})))]),fadeInItems:jf("fadeInItems",[Uf("showing",Wf({opacity:1})),Gf("void => *",[Wf({opacity:0}),Bf("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])},tO=new se("MatMenuContent"),eO=function(){var t=function(){function t(e,n,i,r,a,o,s){_(this,t),this._template=e,this._componentFactoryResolver=n,this._appRef=i,this._injector=r,this._viewContainerRef=a,this._document=o,this._changeDetectorRef=s,this._attached=new W}return b(t,[{key:"attach",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this._portal||(this._portal=new Gk(this._template,this._viewContainerRef)),this.detach(),this._outlet||(this._outlet=new Zk(this._document.createElement("div"),this._componentFactoryResolver,this._appRef,this._injector));var e=this._template.elementRef.nativeElement;e.parentNode.insertBefore(this._outlet.outletElement,e),this._changeDetectorRef&&this._changeDetectorRef.markForCheck(),this._portal.attach(this._outlet,t),this._attached.next()}},{key:"detach",value:function(){this._portal.isAttached&&this._portal.detach()}},{key:"ngOnDestroy",value:function(){this._outlet&&this._outlet.dispose()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(eu),rs(El),rs(Wc),rs(zo),rs(iu),rs(id),rs(xo))},t.\u0275dir=Ve({type:t,selectors:[["ng-template","matMenuContent",""]],features:[Cl([{provide:tO,useExisting:t}])]}),t}(),nO=new se("MAT_MENU_PANEL"),iO=CM(SM((function t(){_(this,t)}))),rO=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,o){var s;return _(this,n),(s=e.call(this))._elementRef=t,s._focusMonitor=r,s._parentMenu=o,s.role="menuitem",s._hovered=new W,s._focused=new W,s._highlighted=!1,s._triggersSubmenu=!1,o&&o.addItem&&o.addItem(a(s)),s._document=i,s}return b(n,[{key:"focus",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"program",e=arguments.length>1?arguments[1]:void 0;this._focusMonitor?this._focusMonitor.focusVia(this._getHostElement(),t,e):this._getHostElement().focus(e),this._focused.next(this)}},{key:"ngAfterViewInit",value:function(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}},{key:"ngOnDestroy",value:function(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}},{key:"_getTabIndex",value:function(){return this.disabled?"-1":"0"}},{key:"_getHostElement",value:function(){return this._elementRef.nativeElement}},{key:"_checkDisabled",value:function(t){this.disabled&&(t.preventDefault(),t.stopPropagation())}},{key:"_handleMouseEnter",value:function(){this._hovered.next(this)}},{key:"getLabel",value:function(){var t=this._elementRef.nativeElement,e=this._document?this._document.TEXT_NODE:3,n="";if(t.childNodes)for(var i=t.childNodes.length,r=0;r0&&void 0!==arguments[0]?arguments[0]:"program";this.lazyContent?this._ngZone.onStable.asObservable().pipe(wv(1)).subscribe((function(){return t._focusFirstItem(e)})):this._focusFirstItem(e)}},{key:"_focusFirstItem",value:function(t){var e=this._keyManager;if(e.setFocusOrigin(t).setFirstItemActive(),!e.activeItem&&this._directDescendantItems.length)for(var n=this._directDescendantItems.first._getHostElement().parentElement;n;){if("menu"===n.getAttribute("role")){n.focus();break}n=n.parentElement}}},{key:"resetActiveItem",value:function(){this._keyManager.setActiveItem(-1)}},{key:"setElevation",value:function(t){var e=Math.min(4+t,24),n="mat-elevation-z".concat(e),i=Object.keys(this._classList).find((function(t){return t.startsWith("mat-elevation-z")}));i&&i!==this._previousElevation||(this._previousElevation&&(this._classList[this._previousElevation]=!1),this._classList[n]=!0,this._previousElevation=n)}},{key:"setPositionClasses",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.xPosition,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.yPosition,n=this._classList;n["mat-menu-before"]="before"===t,n["mat-menu-after"]="after"===t,n["mat-menu-above"]="above"===e,n["mat-menu-below"]="below"===e}},{key:"_startAnimation",value:function(){this._panelAnimationState="enter"}},{key:"_resetAnimation",value:function(){this._panelAnimationState="void"}},{key:"_onAnimationDone",value:function(t){this._animationDone.next(t),this._isAnimating=!1}},{key:"_onAnimationStart",value:function(t){this._isAnimating=!0,"enter"===t.toState&&0===this._keyManager.activeItemIndex&&(t.element.scrollTop=0)}},{key:"_updateDirectDescendants",value:function(){var t=this;this._allItems.changes.pipe(Yv(this._allItems)).subscribe((function(e){t._directDescendantItems.reset(e.filter((function(e){return e._parentMenu===t}))),t._directDescendantItems.notifyOnChanges()}))}},{key:"xPosition",get:function(){return this._xPosition},set:function(t){ir()&&"before"!==t&&"after"!==t&&function(){throw Error('xPosition value must be either \'before\' or after\'.\n Example: ')}(),this._xPosition=t,this.setPositionClasses()}},{key:"yPosition",get:function(){return this._yPosition},set:function(t){ir()&&"above"!==t&&"below"!==t&&function(){throw Error('yPosition value must be either \'above\' or below\'.\n Example: ')}(),this._yPosition=t,this.setPositionClasses()}},{key:"overlapTrigger",get:function(){return this._overlapTrigger},set:function(t){this._overlapTrigger=Jb(t)}},{key:"hasBackdrop",get:function(){return this._hasBackdrop},set:function(t){this._hasBackdrop=Jb(t)}},{key:"panelClass",set:function(t){var e=this,n=this._previousPanelClass;n&&n.length&&n.split(" ").forEach((function(t){e._classList[t]=!1})),this._previousPanelClass=t,t&&t.length&&(t.split(" ").forEach((function(t){e._classList[t]=!0})),this._elementRef.nativeElement.className="")}},{key:"classList",get:function(){return this.panelClass},set:function(t){this.panelClass=t}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Mc),rs(aO))},t.\u0275dir=Ve({type:t,contentQueries:function(t,e,n){var i;1&t&&(Gu(n,tO,!0),Gu(n,rO,!0),Gu(n,rO,!1)),2&t&&(zu(i=Zu())&&(e.lazyContent=i.first),zu(i=Zu())&&(e._allItems=i),zu(i=Zu())&&(e.items=i))},viewQuery:function(t,e){var n;1&t&&Uu(eu,!0),2&t&&zu(n=Zu())&&(e.templateRef=n.first)},inputs:{backdropClass:"backdropClass",xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:"overlapTrigger",hasBackdrop:"hasBackdrop",panelClass:["class","panelClass"],classList:"classList",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"]},outputs:{closed:"closed",close:"close"}}),t}(),lO=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return n}(sO);return t.\u0275fac=function(e){return uO(e||t)},t.\u0275dir=Ve({type:t,features:[fl]}),t}(),uO=Bi(lO),cO=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r){return _(this,n),e.call(this,t,i,r)}return n}(lO);return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Mc),rs(aO))},t.\u0275cmp=Fe({type:t,selectors:[["mat-menu"]],exportAs:["matMenu"],features:[Cl([{provide:nO,useExisting:lO},{provide:lO,useExisting:t}]),fl],ngContentSelectors:$P,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-menu-panel",3,"id","ngClass","keydown","click"],[1,"mat-menu-content"]],template:function(t,e){1&t&&(xs(),ns(0,QP,3,6,"ng-template"))},directives:[vh],styles:['.mat-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;max-height:calc(100vh - 48px);border-radius:4px;outline:0;min-height:64px}.mat-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-menu-panel{outline:solid 1px}.mat-menu-content:not(:empty){padding-top:8px;padding-bottom:8px}.mat-menu-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;line-height:48px;height:48px;padding:0 16px;text-align:left;text-decoration:none;max-width:100%;position:relative}.mat-menu-item::-moz-focus-inner{border:0}.mat-menu-item[disabled]{cursor:default}[dir=rtl] .mat-menu-item{text-align:right}.mat-menu-item .mat-icon{margin-right:16px;vertical-align:middle}.mat-menu-item .mat-icon svg{vertical-align:top}[dir=rtl] .mat-menu-item .mat-icon{margin-left:16px;margin-right:0}.mat-menu-item[disabled]{pointer-events:none}.cdk-high-contrast-active .mat-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-menu-item-highlighted{outline:dotted 1px}.mat-menu-item-submenu-trigger{padding-right:32px}.mat-menu-item-submenu-trigger::after{width:0;height:0;border-style:solid;border-width:5px 0 5px 5px;border-color:transparent transparent transparent currentColor;content:"";display:inline-block;position:absolute;top:50%;right:16px;transform:translateY(-50%)}[dir=rtl] .mat-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}[dir=rtl] .mat-menu-item-submenu-trigger::after{right:auto;left:16px;transform:rotateY(180deg) translateY(-50%)}button.mat-menu-item{width:100%}.mat-menu-item .mat-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n'],encapsulation:2,data:{animation:[XP.transformMenu,XP.fadeInItems]},changeDetection:0}),t}(),dO=new se("mat-menu-scroll-strategy"),hO={provide:dO,deps:[Pw],useFactory:function(t){return function(){return t.scrollStrategies.reposition()}}},fO=Pk({passive:!0}),pO=function(){var t=function(){function t(e,n,i,r,a,o,s,l){var u=this;_(this,t),this._overlay=e,this._element=n,this._viewContainerRef=i,this._parentMenu=a,this._menuItemInstance=o,this._dir=s,this._focusMonitor=l,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=C.EMPTY,this._hoverSubscription=C.EMPTY,this._menuCloseSubscription=C.EMPTY,this._handleTouchStart=function(){return u._openedBy="touch"},this._openedBy=null,this.restoreFocus=!0,this.menuOpened=new Ou,this.onMenuOpen=this.menuOpened,this.menuClosed=new Ou,this.onMenuClose=this.menuClosed,n.nativeElement.addEventListener("touchstart",this._handleTouchStart,fO),o&&(o._triggersSubmenu=this.triggersSubmenu()),this._scrollStrategy=r}return b(t,[{key:"ngAfterContentInit",value:function(){this._checkMenu(),this._handleHover()}},{key:"ngOnDestroy",value:function(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,fO),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}},{key:"triggersSubmenu",value:function(){return!(!this._menuItemInstance||!this._parentMenu)}},{key:"toggleMenu",value:function(){return this._menuOpen?this.closeMenu():this.openMenu()}},{key:"openMenu",value:function(){var t=this;if(!this._menuOpen){this._checkMenu();var e=this._createOverlay(),n=e.getConfig();this._setPosition(n.positionStrategy),n.hasBackdrop=null==this.menu.hasBackdrop?!this.triggersSubmenu():this.menu.hasBackdrop,e.attach(this._getPortal()),this.menu.lazyContent&&this.menu.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe((function(){return t.closeMenu()})),this._initMenu(),this.menu instanceof lO&&this.menu._startAnimation()}}},{key:"closeMenu",value:function(){this.menu.close.emit()}},{key:"focus",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"program",e=arguments.length>1?arguments[1]:void 0;this._focusMonitor?this._focusMonitor.focusVia(this._element,t,e):this._element.nativeElement.focus(e)}},{key:"_destroyMenu",value:function(){var t=this;if(this._overlayRef&&this.menuOpen){var e=this.menu;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this._restoreFocus(),e instanceof lO?(e._resetAnimation(),e.lazyContent?e._animationDone.pipe(gg((function(t){return"void"===t.toState})),wv(1),yk(e.lazyContent._attached)).subscribe({next:function(){return e.lazyContent.detach()},complete:function(){return t._setIsMenuOpen(!1)}}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),e.lazyContent&&e.lazyContent.detach())}}},{key:"_initMenu",value:function(){this.menu.parentMenu=this.triggersSubmenu()?this._parentMenu:void 0,this.menu.direction=this.dir,this._setMenuElevation(),this._setIsMenuOpen(!0),this.menu.focusFirstItem(this._openedBy||"program")}},{key:"_setMenuElevation",value:function(){if(this.menu.setElevation){for(var t=0,e=this.menu.parentMenu;e;)t++,e=e.parentMenu;this.menu.setElevation(t)}}},{key:"_restoreFocus",value:function(){this.restoreFocus&&(this._openedBy?this.triggersSubmenu()||this.focus(this._openedBy):this.focus()),this._openedBy=null}},{key:"_setIsMenuOpen",value:function(t){this._menuOpen=t,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&(this._menuItemInstance._highlighted=t)}},{key:"_checkMenu",value:function(){ir()&&!this.menu&&function(){throw Error('matMenuTriggerFor: must pass in an mat-menu instance.\n\n Example:\n \n ')}()}},{key:"_createOverlay",value:function(){if(!this._overlayRef){var t=this._getOverlayConfig();this._subscribeToPositions(t.positionStrategy),this._overlayRef=this._overlay.create(t),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}},{key:"_getOverlayConfig",value:function(){return new hw({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:this.menu.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:this.menu.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}},{key:"_subscribeToPositions",value:function(t){var e=this;this.menu.setPositionClasses&&t.positionChanges.subscribe((function(t){e.menu.setPositionClasses("start"===t.connectionPair.overlayX?"after":"before","top"===t.connectionPair.overlayY?"below":"above")}))}},{key:"_setPosition",value:function(t){var e=l("before"===this.menu.xPosition?["end","start"]:["start","end"],2),n=e[0],i=e[1],r=l("above"===this.menu.yPosition?["bottom","top"]:["top","bottom"],2),a=r[0],o=r[1],s=a,u=o,c=n,d=i,h=0;this.triggersSubmenu()?(d=n="before"===this.menu.xPosition?"start":"end",i=c="end"===n?"start":"end",h="bottom"===a?8:-8):this.menu.overlapTrigger||(s="top"===a?"bottom":"top",u="top"===o?"bottom":"top"),t.withPositions([{originX:n,originY:s,overlayX:c,overlayY:a,offsetY:h},{originX:i,originY:s,overlayX:d,overlayY:a,offsetY:h},{originX:n,originY:u,overlayX:c,overlayY:o,offsetY:-h},{originX:i,originY:u,overlayX:d,overlayY:o,offsetY:-h}])}},{key:"_menuClosingActions",value:function(){var t=this,e=this._overlayRef.backdropClick(),n=this._overlayRef.detachments();return ft(e,this._parentMenu?this._parentMenu.closed:pg(),this._parentMenu?this._parentMenu._hovered().pipe(gg((function(e){return e!==t._menuItemInstance})),gg((function(){return t._menuOpen}))):pg(),n)}},{key:"_handleMousedown",value:function(t){lM(t)||(this._openedBy=0===t.button?"mouse":null,this.triggersSubmenu()&&t.preventDefault())}},{key:"_handleKeydown",value:function(t){var e=t.keyCode;this.triggersSubmenu()&&(39===e&&"ltr"===this.dir||37===e&&"rtl"===this.dir)&&this.openMenu()}},{key:"_handleClick",value:function(t){this.triggersSubmenu()?(t.stopPropagation(),this.openMenu()):this.toggleMenu()}},{key:"_handleHover",value:function(){var t=this;this.triggersSubmenu()&&(this._hoverSubscription=this._parentMenu._hovered().pipe(gg((function(e){return e===t._menuItemInstance&&!e.disabled})),tE(0,sk)).subscribe((function(){t._openedBy="mouse",t.menu instanceof lO&&t.menu._isAnimating?t.menu._animationDone.pipe(wv(1),tE(0,sk),yk(t._parentMenu._hovered())).subscribe((function(){return t.openMenu()})):t.openMenu()})))}},{key:"_getPortal",value:function(){return this._portal&&this._portal.templateRef===this.menu.templateRef||(this._portal=new Gk(this.menu.templateRef,this._viewContainerRef)),this._portal}},{key:"_deprecatedMatMenuTriggerFor",get:function(){return this.menu},set:function(t){this.menu=t}},{key:"menu",get:function(){return this._menu},set:function(t){var e=this;t!==this._menu&&(this._menu=t,this._menuCloseSubscription.unsubscribe(),t&&(ir()&&t===this._parentMenu&&function(){throw Error("matMenuTriggerFor: menu cannot contain its own trigger. Assign a menu that is not a parent of the trigger or move the trigger outside of the menu.")}(),this._menuCloseSubscription=t.close.asObservable().subscribe((function(t){e._destroyMenu(),"click"!==t&&"tab"!==t||!e._parentMenu||e._parentMenu.closed.emit(t)}))))}},{key:"menuOpen",get:function(){return this._menuOpen}},{key:"dir",get:function(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pw),rs(Pl),rs(iu),rs(dO),rs(lO,8),rs(rO,10),rs(Yk,8),rs(dM))},t.\u0275dir=Ve({type:t,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:["aria-haspopup","true",1,"mat-menu-trigger"],hostVars:2,hostBindings:function(t,e){1&t&&vs("mousedown",(function(t){return e._handleMousedown(t)}))("keydown",(function(t){return e._handleKeydown(t)}))("click",(function(t){return e._handleClick(t)})),2&t&&ts("aria-expanded",e.menuOpen||null)("aria-controls",e.menuOpen?e.menu.panelId:null)},inputs:{restoreFocus:["matMenuTriggerRestoreFocus","restoreFocus"],_deprecatedMatMenuTriggerFor:["mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:["matMenuTriggerFor","menu"],menuData:["matMenuTriggerData","menuData"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"},exportAs:["matMenuTrigger"]}),t}(),mO=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[hO],imports:[MM]}),t}(),gO=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[hO],imports:[[rf,MM,BM,Rw,mO],Vk,MM,mO]}),t}(),vO=function(t){return t[t.Seconds=0]="Seconds",t[t.Minutes=1]="Minutes",t[t.Hours=2]="Hours",t[t.Days=3]="Days",t[t.Weeks=4]="Weeks",t}({}),_O=function(){return function(){}}(),yO=function(){function t(){}return t.getElapsedTime=function(t){var e=new _O;e.timeRepresentation=vO.Seconds,e.totalMinutes=Math.floor(t/60).toString(),e.translationVarName="second";var n=1;t>=60&&t<3600?(e.timeRepresentation=vO.Minutes,n=60,e.translationVarName="minute"):t>=3600&&t<86400?(e.timeRepresentation=vO.Hours,n=3600,e.translationVarName="hour"):t>=86400&&t<604800?(e.timeRepresentation=vO.Days,n=86400,e.translationVarName="day"):t>=604800&&(e.timeRepresentation=vO.Weeks,n=604800,e.translationVarName="week");var i=Math.floor(t/n);return e.elapsedTime=i.toString(),(e.timeRepresentation===vO.Seconds||i>1)&&(e.translationVarName=e.translationVarName+"s"),e},t}();function bO(t,e){1&t&&cs(0,"mat-spinner",5),2&t&&os("diameter",14)}function kO(t,e){1&t&&cs(0,"mat-spinner",6),2&t&&os("diameter",18)}function wO(t,e){1&t&&(ls(0,"mat-icon",9),rl(1,"refresh"),us()),2&t&&os("inline",!0)}function MO(t,e){1&t&&(ls(0,"mat-icon",10),rl(1,"warning"),us()),2&t&&os("inline",!0)}function SO(t,e){if(1&t&&(ds(0),ns(1,wO,2,1,"mat-icon",7),ns(2,MO,2,1,"mat-icon",8),hs()),2&t){var n=Ms();Gr(1),os("ngIf",!n.showAlert),Gr(1),os("ngIf",n.showAlert)}}var xO=function(t){return{time:t}};function CO(t,e){if(1&t&&(ls(0,"span",11),rl(1),Du(2,"translate"),us()),2&t){var n=Ms();Gr(1),al(Tu(2,1,"refresh-button."+n.elapsedTime.translationVarName,wu(4,xO,n.elapsedTime.elapsedTime)))}}var DO=function(t){return{"grey-button-background":t}},LO=function(){function t(){this.refeshRate=-1}return Object.defineProperty(t.prototype,"secondsSinceLastUpdate",{set:function(t){this.elapsedTime=yO.getElapsedTime(t)},enumerable:!1,configurable:!0}),t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-refresh-button"]],inputs:{secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate"},decls:6,vars:14,consts:[["mat-button","",1,"time-button","subtle-transparent-button","white-theme",3,"disabled","ngClass","matTooltip"],["class","icon d-none d-md-inline-block",3,"diameter",4,"ngIf"],["class","icon d-md-none",3,"diameter",4,"ngIf"],[4,"ngIf"],["class","d-none d-md-inline",4,"ngIf"],[1,"icon","d-none","d-md-inline-block",3,"diameter"],[1,"icon","d-md-none",3,"diameter"],["class","icon",3,"inline",4,"ngIf"],["class","icon alert",3,"inline",4,"ngIf"],[1,"icon",3,"inline"],[1,"icon","alert",3,"inline"],[1,"d-none","d-md-inline"]],template:function(t,e){1&t&&(ls(0,"button",0),Du(1,"translate"),ns(2,bO,1,1,"mat-spinner",1),ns(3,kO,1,1,"mat-spinner",2),ns(4,SO,3,2,"ng-container",3),ns(5,CO,3,6,"span",4),us()),2&t&&(os("disabled",e.showLoading)("ngClass",wu(10,DO,!e.showLoading))("matTooltip",e.showAlert?Tu(1,7,"refresh-button.error-tooltip",wu(12,xO,e.refeshRate)):""),Gr(2),os("ngIf",e.showLoading),Gr(1),os("ngIf",e.showLoading),Gr(1),os("ngIf",!e.showLoading),Gr(1),os("ngIf",e.elapsedTime))},directives:[lS,vh,jL,wh,fC,US],pipes:[px],styles:[".time-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;height:40px}.time-button[disabled][_ngcontent-%COMP%]{opacity:.7!important;color:#f8f9f9}.time-button[disabled][_ngcontent-%COMP%] span[_ngcontent-%COMP%]{opacity:.7}.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:16px;margin-right:5px;opacity:.5;display:inline-block}@media (max-width:767px){.time-button[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%]{font-size:22px;margin-right:0;opacity:.75}}.time-button[_ngcontent-%COMP%] .alert[_ngcontent-%COMP%]{color:orange;opacity:1}.time-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:.6rem}"]}),t}();function TO(t,e){if(1&t){var n=ps();ls(0,"button",23),vs("click",(function(){return Cn(n),Ms().requestAction(null)})),ls(1,"mat-icon"),rl(2,"chevron_left"),us(),us()}}function EO(t,e){1&t&&(ds(0),cs(1,"img",24),hs())}function PO(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms();Gr(1),ol(" ",Lu(2,1,n.titleParts[n.titleParts.length-1])," ")}}var OO=function(t){return{transparent:t}};function AO(t,e){if(1&t){var n=ps();ds(0),ls(1,"div",26),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).requestAction(t.actionName)})),ls(2,"mat-icon",27),rl(3),us(),rl(4),Du(5,"translate"),us(),hs()}if(2&t){var i=e.$implicit;Gr(1),os("disabled",i.disabled),Gr(1),os("ngClass",wu(6,OO,i.disabled)),Gr(1),al(i.icon),Gr(1),ol(" ",Lu(5,4,i.name)," ")}}function IO(t,e){1&t&&cs(0,"div",28)}function YO(t,e){if(1&t&&(ds(0),ns(1,AO,6,8,"ng-container",25),ns(2,IO,1,0,"div",9),hs()),2&t){var n=Ms();Gr(1),os("ngForOf",n.optionsData),Gr(1),os("ngIf",n.returnText)}}function FO(t,e){1&t&&cs(0,"div",28)}function RO(t,e){1&t&&cs(0,"img",31),2&t&&os("src","assets/img/lang/"+Ms(2).language.iconName,Dr)}function NO(t,e){if(1&t){var n=ps();ls(0,"div",29),vs("click",(function(){return Cn(n),Ms().openLanguageWindow()})),ns(1,RO,1,1,"img",30),rl(2),Du(3,"translate"),us()}if(2&t){var i=Ms();Gr(1),os("ngIf",i.language),Gr(1),ol(" ",Lu(3,2,i.language?i.language.name:"")," ")}}function HO(t,e){if(1&t){var n=ps();ls(0,"div",32),ls(1,"a",33),vs("click",(function(){return Cn(n),Ms().requestAction(null)})),Du(2,"translate"),ls(3,"mat-icon",22),rl(4,"chevron_left"),us(),us(),us()}if(2&t){var i=Ms();Gr(1),os("matTooltip",Lu(2,2,i.returnText)),Gr(2),os("inline",!0)}}var jO=function(t,e){return{"d-lg-none":t,"d-none d-md-inline-block":e}},BO=function(t,e){return{"mouse-disabled":t,"grey-button-background":e}};function VO(t,e){if(1&t&&(ls(0,"div",27),ls(1,"a",34),ls(2,"mat-icon",22),rl(3),us(),ls(4,"span"),rl(5),Du(6,"translate"),us(),us(),us()),2&t){var n=e.$implicit,i=e.index,r=Ms();os("ngClass",Mu(9,jO,n.onlyIfLessThanLg,1!==r.tabsData.length)),Gr(1),os("disabled",i===r.selectedTabIndex)("routerLink",n.linkParts)("ngClass",Mu(12,BO,r.disableMouse,!r.disableMouse&&i!==r.selectedTabIndex)),Gr(1),os("inline",!0),Gr(1),al(n.icon),Gr(2),al(Lu(6,7,n.label))}}var zO=function(t){return{"d-none":t}};function WO(t,e){if(1&t){var n=ps();ls(0,"div",35),ls(1,"button",36),vs("click",(function(){return Cn(n),Ms().openTabSelector()})),ls(2,"mat-icon",22),rl(3),us(),ls(4,"span"),rl(5),Du(6,"translate"),us(),ls(7,"mat-icon",22),rl(8,"keyboard_arrow_down"),us(),us(),us()}if(2&t){var i=Ms();os("ngClass",wu(8,zO,1===i.tabsData.length)),Gr(1),os("ngClass",Mu(10,BO,i.disableMouse,!i.disableMouse)),Gr(1),os("inline",!0),Gr(1),al(i.tabsData[i.selectedTabIndex].icon),Gr(2),al(Lu(6,6,i.tabsData[i.selectedTabIndex].label)),Gr(2),os("inline",!0)}}function UO(t,e){if(1&t){var n=ps();ls(0,"app-refresh-button",37),vs("click",(function(){return Cn(n),Ms().sendRefreshEvent()})),us()}if(2&t){var i=Ms();os("secondsSinceLastUpdate",i.secondsSinceLastUpdate)("showLoading",i.showLoading)("showAlert",i.showAlert)("refeshRate",i.refeshRate)}}var qO=function(){function t(t,e,n){this.languageService=t,this.dialog=e,this.router=n,this.disableMouse=!1,this.selectedTabIndex=0,this.refeshRate=-1,this.showUpdateButton=!0,this.refreshRequested=new Ou,this.optionSelected=new Ou,this.hideLanguageButton=!0,this.langSubscriptionsGroup=[]}return t.prototype.ngOnInit=function(){var t=this;this.langSubscriptionsGroup.push(this.languageService.currentLanguage.subscribe((function(e){t.language=e}))),this.langSubscriptionsGroup.push(this.languageService.languages.subscribe((function(e){t.hideLanguageButton=!(e.length>1)})))},t.prototype.ngOnDestroy=function(){this.langSubscriptionsGroup.forEach((function(t){return t.unsubscribe()})),this.refreshRequested.complete(),this.optionSelected.complete()},t.prototype.requestAction=function(t){this.optionSelected.emit(t)},t.prototype.openLanguageWindow=function(){JT.openDialog(this.dialog)},t.prototype.sendRefreshEvent=function(){this.refreshRequested.emit()},t.prototype.openTabSelector=function(){var t=this,e=[];this.tabsData.forEach((function(t){e.push({label:t.label,icon:t.icon})})),DE.openDialog(this.dialog,e,"tabs-window.title").afterClosed().subscribe((function(e){e&&(e-=1)!==t.selectedTabIndex&&t.router.navigate(t.tabsData[e].linkParts)}))},t.\u0275fac=function(e){return new(e||t)(rs(Dx),rs(jx),rs(ub))},t.\u0275cmp=Fe({type:t,selectors:[["app-top-bar"]],inputs:{disableMouse:"disableMouse",titleParts:"titleParts",tabsData:"tabsData",selectedTabIndex:"selectedTabIndex",optionsData:"optionsData",returnText:"returnText",secondsSinceLastUpdate:"secondsSinceLastUpdate",showLoading:"showLoading",showAlert:"showAlert",refeshRate:"refeshRate",showUpdateButton:"showUpdateButton"},outputs:{refreshRequested:"refreshRequested",optionSelected:"optionSelected"},decls:31,vars:17,consts:[[1,"top-bar","d-lg-none"],[1,"button-container"],["mat-icon-button","","class","transparent-button",3,"click",4,"ngIf"],[1,"logo-container"],[4,"ngIf"],["mat-icon-button","",1,"transparent-button",3,"matMenuTriggerFor"],[1,"top-bar-margin","d-lg-none"],[3,"overlapTrigger"],["menu","matMenu"],["class","menu-separator",4,"ngIf"],["mat-menu-item","",3,"click",4,"ngIf"],[1,"main-container"],[1,"title","d-none","d-lg-flex"],["class","return-container",4,"ngIf"],[1,"title-text"],[1,"lower-container"],[3,"ngClass",4,"ngFor","ngForOf"],["class","d-md-none",3,"ngClass",4,"ngIf"],[1,"blank-space"],[1,"right-container"],[3,"secondsSinceLastUpdate","showLoading","showAlert","refeshRate","click",4,"ngIf"],["mat-button","",1,"menu-button","subtle-transparent-button","d-none","d-lg-block",3,"matMenuTriggerFor"],[3,"inline"],["mat-icon-button","",1,"transparent-button",3,"click"],["src","/assets/img/logo-s.png"],[4,"ngFor","ngForOf"],["mat-menu-item","",3,"disabled","click"],[3,"ngClass"],[1,"menu-separator"],["mat-menu-item","",3,"click"],["class","flag",3,"src",4,"ngIf"],[1,"flag",3,"src"],[1,"return-container"],[1,"return-button","transparent-button",3,"matTooltip","click"],["mat-button","",1,"tab-button","white-theme",3,"disabled","routerLink","ngClass"],[1,"d-md-none",3,"ngClass"],["mat-button","",1,"tab-button","select-tab-button","white-theme",3,"ngClass","click"],[3,"secondsSinceLastUpdate","showLoading","showAlert","refeshRate","click"]],template:function(t,e){if(1&t&&(ls(0,"div",0),ls(1,"div",1),ns(2,TO,3,0,"button",2),us(),ls(3,"div",3),ns(4,EO,2,0,"ng-container",4),ns(5,PO,3,3,"ng-container",4),us(),ls(6,"div",1),ls(7,"button",5),ls(8,"mat-icon"),rl(9,"menu"),us(),us(),us(),us(),cs(10,"div",6),ls(11,"mat-menu",7,8),ns(13,YO,3,2,"ng-container",4),ns(14,FO,1,0,"div",9),ns(15,NO,4,4,"div",10),us(),ls(16,"div",11),ls(17,"div",12),ns(18,HO,5,4,"div",13),ls(19,"span",14),rl(20),Du(21,"translate"),us(),us(),ls(22,"div",15),ns(23,VO,7,15,"div",16),ns(24,WO,9,13,"div",17),cs(25,"div",18),ls(26,"div",19),ns(27,UO,1,4,"app-refresh-button",20),ls(28,"button",21),ls(29,"mat-icon",22),rl(30,"menu"),us(),us(),us(),us(),us()),2&t){var n=is(12);Gr(2),os("ngIf",e.returnText),Gr(2),os("ngIf",!e.titleParts||e.titleParts.length<2),Gr(1),os("ngIf",e.titleParts&&e.titleParts.length>=2),Gr(2),os("matMenuTriggerFor",n),Gr(4),os("overlapTrigger",!1),Gr(2),os("ngIf",e.optionsData&&e.optionsData.length>=1),Gr(1),os("ngIf",!e.hideLanguageButton&&e.optionsData&&e.optionsData.length>=1),Gr(1),os("ngIf",!e.hideLanguageButton),Gr(3),os("ngIf",e.returnText),Gr(2),ol(" ",Lu(21,15,e.titleParts[e.titleParts.length-1])," "),Gr(3),os("ngForOf",e.tabsData),Gr(1),os("ngIf",e.tabsData&&e.tabsData[e.selectedTabIndex]),Gr(3),os("ngIf",e.showUpdateButton),Gr(1),os("matMenuTriggerFor",n),Gr(1),os("inline",!0)}},directives:[wh,lS,pO,US,cO,bh,rO,vh,jL,uS,hb,LO],pipes:[px],styles:[".main-container[_ngcontent-%COMP%]{border-bottom:1px solid hsla(0,0%,100%,.15);padding-bottom:10px;margin-bottom:-5px;height:100px}@media (max-width:991px){.main-container[_ngcontent-%COMP%]{height:55px}}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{font-size:.875rem;margin-bottom:15px;margin-left:5px;flex-direction:row;align-items:center}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .title-text[_ngcontent-%COMP%]{z-index:1}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%]{width:30px;position:relative;top:2px}.main-container[_ngcontent-%COMP%] .title[_ngcontent-%COMP%] .return-container[_ngcontent-%COMP%] .return-button[_ngcontent-%COMP%]{line-height:1;font-size:25px;position:relative;top:2px;width:100%;margin-right:4px;cursor:pointer}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%]{display:flex}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .blank-space[_ngcontent-%COMP%]{flex-grow:1}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]{color:#f8f9f9;border-radius:10px;opacity:.5;margin-right:2px;text-decoration:none;height:40px;display:flex;align-items:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%]:hover{opacity:.75}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[disabled][_ngcontent-%COMP%]{opacity:1!important;color:#f8f9f9;background:rgba(0,0,0,.7)!important;border-color:rgba(0,0,0,.1)}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] .mat-icon[_ngcontent-%COMP%]{margin-right:5px;opacity:.75}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .tab-button[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{font-size:1rem;margin:0 4px;position:relative;top:-1px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]{opacity:.75!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .select-tab-button[_ngcontent-%COMP%]:hover{opacity:1!important}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%]{display:flex;align-items:center}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] app-refresh-button[_ngcontent-%COMP%]{align-self:flex-end}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%]{height:32px;width:32px;min-width:0!important;background-color:#f8f9f9;border-radius:100%;padding:0;line-height:normal;color:#929292;font-size:20px}.main-container[_ngcontent-%COMP%] .lower-container[_ngcontent-%COMP%] .right-container[_ngcontent-%COMP%] .menu-button[_ngcontent-%COMP%] .mat-button-wrapper{display:flex;justify-content:center}.menu-separator[_ngcontent-%COMP%]{width:100%;height:1px;background-color:rgba(0,0,0,.12)}.flag[_ngcontent-%COMP%]{width:24px;margin-right:16px}.transparent[_ngcontent-%COMP%]{opacity:.5}.top-bar[_ngcontent-%COMP%]{position:fixed;z-index:10;width:100%;height:56px;background-color:#f8f9f9;top:0;left:0;right:0;color:#202226;display:flex}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%]{flex-grow:1;display:flex;justify-content:center;align-items:center}.top-bar[_ngcontent-%COMP%] .logo-container[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{height:28px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%]{flex-shrink:0;width:56px}.top-bar[_ngcontent-%COMP%] .button-container[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{width:56px;height:56px}.top-bar-margin[_ngcontent-%COMP%]{margin-top:56px;flex-shrink:0}"]}),t}(),GO=function(){return["1"]};function KO(t,e){if(1&t&&(ls(0,"a",10),ls(1,"mat-icon",11),rl(2,"chevron_left"),us(),rl(3),Du(4,"translate"),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(ku(6,GO)))("queryParams",n.queryParams),Gr(1),os("inline",!0),Gr(2),ol(" ",Lu(4,4,"paginator.first")," ")}}function JO(t,e){if(1&t&&(ls(0,"a",12),ls(1,"mat-icon",11),rl(2,"chevron_left"),us(),ls(3,"span",13),rl(4),Du(5,"translate"),us(),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(ku(6,GO)))("queryParams",n.queryParams),Gr(1),os("inline",!0),Gr(3),al(Lu(5,4,"paginator.first"))}}var ZO=function(t){return[t]};function $O(t,e){if(1&t&&(ls(0,"a",10),ls(1,"div"),ls(2,"mat-icon",11),rl(3,"chevron_left"),us(),us(),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(3,ZO,(n.currentPage-1).toString())))("queryParams",n.queryParams),Gr(2),os("inline",!0)}}function QO(t,e){if(1&t&&(ls(0,"a",10),rl(1),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(3,ZO,(n.currentPage-2).toString())))("queryParams",n.queryParams),Gr(1),al(n.currentPage-2)}}function XO(t,e){if(1&t&&(ls(0,"a",14),rl(1),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(3,ZO,(n.currentPage-1).toString())))("queryParams",n.queryParams),Gr(1),al(n.currentPage-1)}}function tA(t,e){if(1&t&&(ls(0,"a",14),rl(1),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(3,ZO,(n.currentPage+1).toString())))("queryParams",n.queryParams),Gr(1),al(n.currentPage+1)}}function eA(t,e){if(1&t&&(ls(0,"a",10),rl(1),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(3,ZO,(n.currentPage+2).toString())))("queryParams",n.queryParams),Gr(1),al(n.currentPage+2)}}function nA(t,e){if(1&t&&(ls(0,"a",10),ls(1,"div"),ls(2,"mat-icon",11),rl(3,"chevron_right"),us(),us(),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(3,ZO,(n.currentPage+1).toString())))("queryParams",n.queryParams),Gr(2),os("inline",!0)}}function iA(t,e){if(1&t&&(ls(0,"a",10),rl(1),Du(2,"translate"),ls(3,"mat-icon",11),rl(4,"chevron_right"),us(),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(6,ZO,n.numberOfPages.toString())))("queryParams",n.queryParams),Gr(1),ol(" ",Lu(2,4,"paginator.last")," "),Gr(2),os("inline",!0)}}function rA(t,e){if(1&t&&(ls(0,"a",12),ls(1,"mat-icon",11),rl(2,"chevron_right"),us(),ls(3,"span",13),rl(4),Du(5,"translate"),us(),us()),2&t){var n=Ms();os("routerLink",n.linkParts.concat(wu(6,ZO,n.numberOfPages.toString())))("queryParams",n.queryParams),Gr(1),os("inline",!0),Gr(3),al(Lu(5,4,"paginator.last"))}}var aA=function(t){return{number:t}};function oA(t,e){if(1&t&&(ls(0,"div",15),rl(1),Du(2,"translate"),us()),2&t){var n=Ms();Gr(1),al(Tu(2,1,"paginator.total",wu(4,aA,n.numberOfPages)))}}function sA(t,e){if(1&t&&(ls(0,"div",16),rl(1),Du(2,"translate"),us()),2&t){var n=Ms();Gr(1),al(Tu(2,1,"paginator.total",wu(4,aA,n.numberOfPages)))}}var lA=function(){function t(t,e){this.dialog=t,this.router=e,this.linkParts=[""],this.queryParams={}}return t.prototype.openSelectionDialog=function(){for(var t=this,e=[],n=1;n<=this.numberOfPages;n++)e.push({label:n.toString()});DE.openDialog(this.dialog,e,"paginator.select-page-title").afterClosed().subscribe((function(e){e&&t.router.navigate(t.linkParts.concat([e.toString()]),{queryParams:t.queryParams})}))},t.\u0275fac=function(e){return new(e||t)(rs(jx),rs(ub))},t.\u0275cmp=Fe({type:t,selectors:[["app-paginator"]],inputs:{currentPage:"currentPage",numberOfPages:"numberOfPages",linkParts:"linkParts",queryParams:"queryParams"},decls:21,vars:13,consts:[[1,"main-container"],[1,"d-inline-block","small-rounded-elevated-box","mt-3"],[1,"d-flex"],[1,"responsive-height","d-md-none"],["class","d-none d-md-flex",3,"routerLink","queryParams",4,"ngIf"],["class","d-flex d-md-none flex-column",3,"routerLink","queryParams",4,"ngIf"],[3,"routerLink","queryParams",4,"ngIf"],[1,"selected",3,"click"],["class","d-none d-md-block total-pages",4,"ngIf"],["class","d-block d-md-none total-pages",4,"ngIf"],[1,"d-none","d-md-flex",3,"routerLink","queryParams"],[3,"inline"],[1,"d-flex","d-md-none","flex-column",3,"routerLink","queryParams"],[1,"label"],[3,"routerLink","queryParams"],[1,"d-none","d-md-block","total-pages"],[1,"d-block","d-md-none","total-pages"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ls(2,"div",2),ls(3,"div",3),rl(4,"\xa0"),cs(5,"br"),rl(6,"\xa0"),us(),ns(7,KO,5,7,"a",4),ns(8,JO,6,7,"a",5),ns(9,$O,4,5,"a",4),ns(10,QO,2,5,"a",4),ns(11,XO,2,5,"a",6),ls(12,"a",7),vs("click",(function(){return e.openSelectionDialog()})),rl(13),us(),ns(14,tA,2,5,"a",6),ns(15,eA,2,5,"a",4),ns(16,nA,4,5,"a",4),ns(17,iA,5,8,"a",4),ns(18,rA,6,8,"a",5),us(),us(),ns(19,oA,3,6,"div",8),ns(20,sA,3,6,"div",9),us()),2&t&&(Gr(7),os("ngIf",e.currentPage>3),Gr(1),os("ngIf",e.currentPage>2),Gr(1),os("ngIf",e.currentPage>1),Gr(1),os("ngIf",e.currentPage>2),Gr(1),os("ngIf",e.currentPage>1),Gr(2),al(e.currentPage),Gr(1),os("ngIf",e.currentPage3),Gr(1),os("ngIf",e.numberOfPages>2))},directives:[wh,hb,US],pipes:[px],styles:[".main-container[_ngcontent-%COMP%]{text-align:right}.main-container[_ngcontent-%COMP%] .responsive-height[_ngcontent-%COMP%]{padding:10px 0;width:0}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{padding:10px;border-right:1px solid hsla(0,0%,100%,.15);border-left:1px solid hsla(0,0%,100%,.15);min-width:40px;text-align:center;color:rgba(248,249,249,.5);text-decoration:none;display:flex;align-items:center;justify-content:center}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{background:rgba(0,0,0,.2)}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] .label[_ngcontent-%COMP%]{font-size:.7rem}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]{color:#f8f9f9;background:rgba(0,0,0,.36);padding:10px 20px;cursor:pointer}.main-container[_ngcontent-%COMP%] .selected[_ngcontent-%COMP%]:hover{background:rgba(0,0,0,.6)}.main-container[_ngcontent-%COMP%] .total-pages[_ngcontent-%COMP%]{font-size:.6rem;margin-top:-3px;margin-right:4px}"]}),t}(),uA=function(){return["start.title"]};function cA(t,e){if(1&t&&(ls(0,"div",2),ls(1,"div"),cs(2,"app-top-bar",3),us(),cs(3,"app-loading-indicator",4),us()),2&t){var n=Ms();Gr(2),os("titleParts",ku(4,uA))("tabsData",n.tabsData)("selectedTabIndex",n.showDmsgInfo?1:0)("showUpdateButton",!1)}}function dA(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms().$implicit;Gr(1),al(Lu(2,1,n.translatableValue))}}function hA(t,e){if(1&t&&(ds(0),rl(1),hs()),2&t){var n=Ms().$implicit;Gr(1),al(n.value)}}function fA(t,e){if(1&t&&(ls(0,"div",23),ls(1,"span"),rl(2),Du(3,"translate"),us(),ns(4,dA,3,3,"ng-container",24),ns(5,hA,2,1,"ng-container",24),us()),2&t){var n=e.$implicit;Gr(2),ol("",Lu(3,3,n.filterName),": "),Gr(2),os("ngIf",n.translatableValue),Gr(1),os("ngIf",n.value)}}function pA(t,e){if(1&t){var n=ps();ls(0,"div",20),vs("click",(function(){return Cn(n),Ms(2).dataFilterer.removeFilters()})),ns(1,fA,6,5,"div",21),ls(2,"div",22),rl(3),Du(4,"translate"),us(),us()}if(2&t){var i=Ms(2);Gr(1),os("ngForOf",i.dataFilterer.currentFiltersTexts),Gr(2),al(Lu(4,2,"filters.press-to-remove"))}}function mA(t,e){if(1&t){var n=ps();ls(0,"mat-icon",25),vs("click",(function(){return Cn(n),Ms(2).dataFilterer.changeFilters()})),Du(1,"translate"),rl(2,"filter_list"),us()}2&t&&os("inline",!0)("matTooltip",Lu(1,2,"filters.filter-action"))}function gA(t,e){1&t&&(ls(0,"mat-icon",26),rl(1,"more_horiz"),us()),2&t&&(Ms(),os("matMenuTriggerFor",is(12)))}var vA=function(){return["/nodes","list"]},_A=function(){return["/nodes","dmsg"]};function yA(t,e){if(1&t&&cs(0,"app-paginator",27),2&t){var n=Ms(2);os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",n.showDmsgInfo?ku(5,_A):ku(4,vA))("queryParams",n.dataFilterer.currentUrlQueryParams)}}function bA(t,e){if(1&t&&(ls(0,"mat-icon",42),rl(1),us()),2&t){var n=Ms(4);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function kA(t,e){if(1&t&&(ls(0,"mat-icon",42),rl(1),us()),2&t){var n=Ms(4);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function wA(t,e){if(1&t&&(ls(0,"mat-icon",42),rl(1),us()),2&t){var n=Ms(4);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function MA(t,e){if(1&t&&(ls(0,"mat-icon",42),rl(1),us()),2&t){var n=Ms(4);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function SA(t,e){1&t&&(ds(0),rl(1,"*"),hs())}function xA(t,e){if(1&t&&(ds(0),ls(1,"mat-icon",42),rl(2),us(),ns(3,SA,2,0,"ng-container",24),hs()),2&t){var n=Ms(5);Gr(1),os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow),Gr(1),os("ngIf",n.dataSorter.currentlySortingByLabel)}}function CA(t,e){if(1&t){var n=ps();ls(0,"th",38),vs("click",(function(){Cn(n);var t=Ms(4);return t.dataSorter.changeSortingOrder(t.dmsgServerSortData)})),rl(1),Du(2,"translate"),ns(3,xA,4,3,"ng-container",24),us()}if(2&t){var i=Ms(4);Gr(1),ol(" ",Lu(2,2,"nodes.dmsg-server")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.dmsgServerSortData)}}function DA(t,e){if(1&t&&(ls(0,"mat-icon",42),rl(1),us()),2&t){var n=Ms(5);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function LA(t,e){if(1&t){var n=ps();ls(0,"th",38),vs("click",(function(){Cn(n);var t=Ms(4);return t.dataSorter.changeSortingOrder(t.pingSortData)})),rl(1),Du(2,"translate"),ns(3,DA,2,2,"mat-icon",35),us()}if(2&t){var i=Ms(4);Gr(1),ol(" ",Lu(2,2,"nodes.ping")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.pingSortData)}}function TA(t,e){1&t&&(ls(0,"mat-icon",49),Du(1,"translate"),rl(2,"star"),us()),2&t&&os("inline",!0)("matTooltip",Lu(1,2,"nodes.hypervisor-info"))}function EA(t,e){if(1&t){var n=ps();ls(0,"td"),ls(1,"app-labeled-element-text",50),vs("labelEdited",(function(){return Cn(n),Ms(5).forceDataRefresh()})),us(),us()}if(2&t){var i=Ms().$implicit,r=Ms(4);Gr(1),Ds("id",i.dmsgServerPk),os("short",!0)("elementType",r.labeledElementTypes.DmsgServer)}}var PA=function(t){return{time:t}};function OA(t,e){if(1&t&&(ls(0,"td"),rl(1),Du(2,"translate"),us()),2&t){var n=Ms().$implicit;Gr(1),ol(" ",Tu(2,1,"common.time-in-ms",wu(4,PA,n.roundTripPing))," ")}}function AA(t,e){if(1&t){var n=ps();ls(0,"button",47),vs("click",(function(){Cn(n);var t=Ms().$implicit;return Ms(4).open(t)})),Du(1,"translate"),ls(2,"mat-icon",42),rl(3,"chevron_right"),us(),us()}2&t&&(os("matTooltip",Lu(1,2,"nodes.view-node")),Gr(2),os("inline",!0))}function IA(t,e){if(1&t){var n=ps();ls(0,"button",47),vs("click",(function(){Cn(n);var t=Ms().$implicit;return Ms(4).deleteNode(t)})),Du(1,"translate"),ls(2,"mat-icon"),rl(3,"close"),us(),us()}2&t&&os("matTooltip",Lu(1,1,"nodes.delete-node"))}function YA(t,e){if(1&t){var n=ps();ls(0,"tr",43),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(4).open(t)})),ls(1,"td"),ns(2,TA,3,4,"mat-icon",44),us(),ls(3,"td"),cs(4,"span",45),Du(5,"translate"),us(),ls(6,"td"),rl(7),us(),ls(8,"td"),rl(9),us(),ns(10,EA,2,3,"td",24),ns(11,OA,3,6,"td",24),ls(12,"td",46),vs("click",(function(t){return Cn(n),t.stopPropagation()})),ls(13,"button",47),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(4).copyToClipboard(t)})),Du(14,"translate"),ls(15,"mat-icon",42),rl(16,"filter_none"),us(),us(),ls(17,"button",47),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(4).showEditLabelDialog(t)})),Du(18,"translate"),ls(19,"mat-icon",42),rl(20,"short_text"),us(),us(),ns(21,AA,4,4,"button",48),ns(22,IA,4,3,"button",48),us(),us()}if(2&t){var i=e.$implicit,r=Ms(4);Gr(2),os("ngIf",i.isHypervisor),Gr(2),Us(r.nodeStatusClass(i,!0)),os("matTooltip",Lu(5,14,r.nodeStatusText(i,!0))),Gr(3),ol(" ",i.label," "),Gr(2),ol(" ",i.localPk," "),Gr(1),os("ngIf",r.showDmsgInfo),Gr(1),os("ngIf",r.showDmsgInfo),Gr(2),os("matTooltip",Lu(14,16,r.showDmsgInfo?"nodes.copy-data":"nodes.copy-key")),Gr(2),os("inline",!0),Gr(2),os("matTooltip",Lu(18,18,"labeled-element.edit-label")),Gr(2),os("inline",!0),Gr(2),os("ngIf",i.online),Gr(1),os("ngIf",!i.online)}}function FA(t,e){if(1&t){var n=ps();ls(0,"table",32),ls(1,"tr"),ls(2,"th",33),vs("click",(function(){Cn(n);var t=Ms(3);return t.dataSorter.changeSortingOrder(t.hypervisorSortData)})),Du(3,"translate"),ls(4,"mat-icon",34),rl(5,"star_outline"),us(),ns(6,bA,2,2,"mat-icon",35),us(),ls(7,"th",33),vs("click",(function(){Cn(n);var t=Ms(3);return t.dataSorter.changeSortingOrder(t.stateSortData)})),Du(8,"translate"),cs(9,"span",36),ns(10,kA,2,2,"mat-icon",35),us(),ls(11,"th",37),vs("click",(function(){Cn(n);var t=Ms(3);return t.dataSorter.changeSortingOrder(t.labelSortData)})),rl(12),Du(13,"translate"),ns(14,wA,2,2,"mat-icon",35),us(),ls(15,"th",38),vs("click",(function(){Cn(n);var t=Ms(3);return t.dataSorter.changeSortingOrder(t.keySortData)})),rl(16),Du(17,"translate"),ns(18,MA,2,2,"mat-icon",35),us(),ns(19,CA,4,4,"th",39),ns(20,LA,4,4,"th",39),cs(21,"th",40),us(),ns(22,YA,23,20,"tr",41),us()}if(2&t){var i=Ms(3);Gr(2),os("matTooltip",Lu(3,11,"nodes.hypervisor")),Gr(4),os("ngIf",i.dataSorter.currentSortingColumn===i.hypervisorSortData),Gr(1),os("matTooltip",Lu(8,13,"nodes.state-tooltip")),Gr(3),os("ngIf",i.dataSorter.currentSortingColumn===i.stateSortData),Gr(2),ol(" ",Lu(13,15,"nodes.label")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.labelSortData),Gr(2),ol(" ",Lu(17,17,"nodes.key")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.keySortData),Gr(1),os("ngIf",i.showDmsgInfo),Gr(1),os("ngIf",i.showDmsgInfo),Gr(2),os("ngForOf",i.dataSource)}}function RA(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.label")))}function NA(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.inverted-order")))}function HA(t,e){1&t&&(ls(0,"div",56),ls(1,"mat-icon",61),rl(2,"star"),us(),rl(3,"\xa0 "),ls(4,"span",62),rl(5),Du(6,"translate"),us(),us()),2&t&&(Gr(1),os("inline",!0),Gr(4),al(Lu(6,2,"nodes.hypervisor")))}function jA(t,e){if(1&t){var n=ps();ls(0,"div",57),ls(1,"span",9),rl(2),Du(3,"translate"),us(),rl(4,": "),ls(5,"app-labeled-element-text",63),vs("labelEdited",(function(){return Cn(n),Ms(5).forceDataRefresh()})),us(),us()}if(2&t){var i=Ms().$implicit,r=Ms(4);Gr(2),al(Lu(3,3,"nodes.dmsg-server")),Gr(3),Ds("id",i.dmsgServerPk),os("elementType",r.labeledElementTypes.DmsgServer)}}function BA(t,e){if(1&t&&(ls(0,"div",56),ls(1,"span",9),rl(2),Du(3,"translate"),us(),rl(4),Du(5,"translate"),us()),2&t){var n=Ms().$implicit;Gr(2),al(Lu(3,2,"nodes.ping")),Gr(2),ol(": ",Tu(5,4,"common.time-in-ms",wu(7,PA,n.roundTripPing))," ")}}function VA(t,e){if(1&t){var n=ps();ls(0,"tr",43),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(4).open(t)})),ls(1,"td"),ls(2,"div",52),ls(3,"div",53),ns(4,HA,7,4,"div",55),ls(5,"div",56),ls(6,"span",9),rl(7),Du(8,"translate"),us(),rl(9,": "),ls(10,"span"),rl(11),Du(12,"translate"),us(),us(),ls(13,"div",56),ls(14,"span",9),rl(15),Du(16,"translate"),us(),rl(17),us(),ls(18,"div",57),ls(19,"span",9),rl(20),Du(21,"translate"),us(),rl(22),us(),ns(23,jA,6,5,"div",58),ns(24,BA,6,9,"div",55),us(),cs(25,"div",59),ls(26,"div",54),ls(27,"button",60),vs("click",(function(t){Cn(n);var i=e.$implicit,r=Ms(4);return t.stopPropagation(),r.showOptionsDialog(i)})),Du(28,"translate"),ls(29,"mat-icon"),rl(30),us(),us(),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(4);Gr(4),os("ngIf",i.isHypervisor),Gr(3),al(Lu(8,13,"nodes.state")),Gr(3),Us(r.nodeStatusClass(i,!1)+" title"),Gr(1),al(Lu(12,15,r.nodeStatusText(i,!1))),Gr(4),al(Lu(16,17,"nodes.label")),Gr(2),ol(": ",i.label," "),Gr(3),al(Lu(21,19,"nodes.key")),Gr(2),ol(": ",i.localPk," "),Gr(1),os("ngIf",r.showDmsgInfo),Gr(1),os("ngIf",r.showDmsgInfo),Gr(3),os("matTooltip",Lu(28,21,"common.options")),Gr(3),al("add")}}function zA(t,e){if(1&t){var n=ps();ls(0,"table",51),ls(1,"tr",43),vs("click",(function(){return Cn(n),Ms(3).dataSorter.openSortingOrderModal()})),ls(2,"td"),ls(3,"div",52),ls(4,"div",53),ls(5,"div",9),rl(6),Du(7,"translate"),us(),ls(8,"div"),rl(9),Du(10,"translate"),ns(11,RA,3,3,"ng-container",24),ns(12,NA,3,3,"ng-container",24),us(),us(),ls(13,"div",54),ls(14,"mat-icon",42),rl(15,"keyboard_arrow_down"),us(),us(),us(),us(),us(),ns(16,VA,31,23,"tr",41),us()}if(2&t){var i=Ms(3);Gr(6),al(Lu(7,6,"tables.sorting-title")),Gr(3),ol("",Lu(10,8,i.dataSorter.currentSortingColumn.label)," "),Gr(2),os("ngIf",i.dataSorter.currentlySortingByLabel),Gr(1),os("ngIf",i.dataSorter.sortingInReverseOrder),Gr(2),os("inline",!0),Gr(2),os("ngForOf",i.dataSource)}}function WA(t,e){if(1&t&&(ls(0,"div",28),ls(1,"div",29),ns(2,FA,23,19,"table",30),ns(3,zA,17,10,"table",31),us(),us()),2&t){var n=Ms(2);Gr(2),os("ngIf",n.dataSource.length>0),Gr(1),os("ngIf",n.dataSource.length>0)}}function UA(t,e){if(1&t&&cs(0,"app-paginator",27),2&t){var n=Ms(2);os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",n.showDmsgInfo?ku(5,_A):ku(4,vA))("queryParams",n.dataFilterer.currentUrlQueryParams)}}function qA(t,e){1&t&&(ls(0,"span",67),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"nodes.empty")))}function GA(t,e){1&t&&(ls(0,"span",67),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"nodes.empty-with-filter")))}function KA(t,e){if(1&t&&(ls(0,"div",28),ls(1,"div",64),ls(2,"mat-icon",65),rl(3,"warning"),us(),ns(4,qA,3,3,"span",66),ns(5,GA,3,3,"span",66),us(),us()),2&t){var n=Ms(2);Gr(2),os("inline",!0),Gr(2),os("ngIf",0===n.allNodes.length),Gr(1),os("ngIf",0!==n.allNodes.length)}}var JA=function(t){return{"paginator-icons-fixer":t}};function ZA(t,e){if(1&t){var n=ps();ls(0,"div",5),ls(1,"div",6),ls(2,"app-top-bar",7),vs("refreshRequested",(function(){return Cn(n),Ms().forceDataRefresh(!0)}))("optionSelected",(function(t){return Cn(n),Ms().performAction(t)})),us(),us(),ls(3,"div",6),ls(4,"div",8),ls(5,"div",9),ns(6,pA,5,4,"div",10),us(),ls(7,"div",11),ls(8,"div",12),ns(9,mA,3,4,"mat-icon",13),ns(10,gA,2,1,"mat-icon",14),ls(11,"mat-menu",15,16),ls(13,"div",17),vs("click",(function(){return Cn(n),Ms().removeOffline()})),rl(14),Du(15,"translate"),us(),us(),us(),ns(16,yA,1,6,"app-paginator",18),us(),us(),ns(17,WA,4,2,"div",19),ns(18,UA,1,6,"app-paginator",18),ns(19,KA,6,3,"div",19),us(),us()}if(2&t){var i=Ms();Gr(2),os("titleParts",ku(21,uA))("tabsData",i.tabsData)("selectedTabIndex",i.showDmsgInfo?1:0)("secondsSinceLastUpdate",i.secondsSinceLastUpdate)("showLoading",i.updating)("showAlert",i.errorsUpdating)("refeshRate",i.storageService.getRefreshTime())("optionsData",i.options),Gr(2),os("ngClass",wu(22,JA,i.numberOfPages>1)),Gr(2),os("ngIf",i.dataFilterer.currentFiltersTexts&&i.dataFilterer.currentFiltersTexts.length>0),Gr(3),os("ngIf",i.allNodes&&i.allNodes.length>0),Gr(1),os("ngIf",i.dataSource.length>0),Gr(1),os("overlapTrigger",!1),Gr(2),Ds("disabled",!i.hasOfflineNodes),Gr(1),ol(" ",Lu(15,19,"nodes.delete-all-offline")," "),Gr(2),os("ngIf",i.numberOfPages>1),Gr(1),os("ngIf",0!==i.dataSource.length),Gr(1),os("ngIf",i.numberOfPages>1),Gr(1),os("ngIf",0===i.dataSource.length)}}var $A=function(){function t(t,e,n,i,r,a,o,s,l,u){var c=this;this.nodeService=t,this.router=e,this.dialog=n,this.authService=i,this.storageService=r,this.ngZone=a,this.snackbarService=o,this.clipboardService=s,this.translateService=l,this.nodesListId="nl",this.dmsgListId="dl",this.hypervisorSortData=new VE(["isHypervisor"],"nodes.hypervisor",zE.Boolean),this.stateSortData=new VE(["online"],"nodes.state",zE.Boolean),this.labelSortData=new VE(["label"],"nodes.label",zE.Text),this.keySortData=new VE(["localPk"],"nodes.key",zE.Text),this.dmsgServerSortData=new VE(["dmsgServerPk"],"nodes.dmsg-server",zE.Text,["dmsgServerPk_label"]),this.pingSortData=new VE(["roundTripPing"],"nodes.ping",zE.Number),this.loading=!0,this.tabsData=[],this.options=[],this.showDmsgInfo=!1,this.hasOfflineNodes=!1,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"nodes.filter-dialog.online",keyNameInElementsArray:"online",type:TE.Select,printableLabelsForValues:[{value:"",label:"nodes.filter-dialog.online-options.any"},{value:"true",label:"nodes.filter-dialog.online-options.online"},{value:"false",label:"nodes.filter-dialog.online-options.offline"}]},{filterName:"nodes.filter-dialog.label",keyNameInElementsArray:"label",type:TE.TextInput,maxlength:100},{filterName:"nodes.filter-dialog.key",keyNameInElementsArray:"localPk",type:TE.TextInput,maxlength:66},{filterName:"nodes.filter-dialog.dmsg",keyNameInElementsArray:"dmsgServerPk",secondaryKeyNameInElementsArray:"dmsgServerPk_label",type:TE.TextInput,maxlength:66}],this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,this.labeledElementTypes=Gb,this.updateOptionsMenu(!0),this.authVerificationSubscription=this.authService.checkLogin().subscribe((function(t){t===iC.AuthDisabled&&c.updateOptionsMenu(!1)})),this.showDmsgInfo=-1!==this.router.url.indexOf("dmsg"),this.showDmsgInfo||this.filterProperties.splice(this.filterProperties.length-1);var d=[this.hypervisorSortData,this.stateSortData,this.labelSortData,this.keySortData];this.showDmsgInfo&&(d.push(this.dmsgServerSortData),d.push(this.pingSortData)),this.dataSorter=new WE(this.dialog,this.translateService,d,2,this.showDmsgInfo?this.dmsgListId:this.nodesListId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe((function(){c.recalculateElementsToShow()})),this.dataFilterer=new gP(this.dialog,u,this.router,this.filterProperties,this.showDmsgInfo?this.dmsgListId:this.nodesListId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe((function(t){c.filteredNodes=t,c.hasOfflineNodes=!1,c.filteredNodes.forEach((function(t){t.online||(c.hasOfflineNodes=!0)})),c.dataSorter.setData(c.filteredNodes)})),this.navigationsSubscription=u.paramMap.subscribe((function(t){if(t.has("page")){var e=Number.parseInt(t.get("page"),10);(isNaN(e)||e<1)&&(e=1),c.currentPageInUrl=e,c.recalculateElementsToShow()}})),this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"]},{icon:"language",label:"nodes.dmsg-title",linkParts:["/nodes","dmsg"]},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.languageSubscription=this.translateService.onLangChange.subscribe((function(){c.nodeService.forceNodeListRefresh()}))}return t.prototype.updateOptionsMenu=function(t){this.options=[{name:"nodes.update-all",actionName:"updateAll",icon:"get_app"}],t&&this.options.push({name:"common.logout",actionName:"logout",icon:"power_settings_new"})},t.prototype.ngOnInit=function(){var t=this;this.nodeService.startRequestingNodeList(),this.startGettingData(),this.ngZone.runOutsideAngular((function(){t.updateTimeSubscription=gk(5e3,5e3).subscribe((function(){return t.ngZone.run((function(){t.secondsSinceLastUpdate=Math.floor((Date.now()-t.lastUpdate)/1e3)}))}))}))},t.prototype.ngOnDestroy=function(){this.nodeService.stopRequestingNodeList(),this.authVerificationSubscription.unsubscribe(),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),this.languageSubscription.unsubscribe(),this.updateSubscription&&this.updateSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()},t.prototype.performAction=function(t){"logout"===t?this.logout():"updateAll"===t&&this.updateAll()},t.prototype.nodeStatusClass=function(t,e){switch(t.online){case!0:return this.nodesHealthInfo.get(t.localPk).allServicesOk?e?"dot-green":"green-text":e?"dot-yellow online-warning":"yellow-text";default:return e?"dot-red":"red-text"}},t.prototype.nodeStatusText=function(t,e){switch(t.online){case!0:return this.nodesHealthInfo.get(t.localPk).allServicesOk?"node.statuses.online"+(e?"-tooltip":""):"node.statuses.partially-online"+(e?"-tooltip":"");default:return"node.statuses.offline"+(e?"-tooltip":"")}},t.prototype.forceDataRefresh=function(t){void 0===t&&(t=!1),t&&(this.lastUpdateRequestedManually=!0),this.nodeService.forceNodeListRefresh()},t.prototype.startGettingData=function(){var t=this;this.dataSubscription=this.nodeService.updatingNodeList.subscribe((function(e){return t.updating=e})),this.ngZone.runOutsideAngular((function(){t.dataSubscription.add(t.nodeService.nodeList.subscribe((function(e){t.ngZone.run((function(){e&&(e.data?(t.allNodes=e.data,t.showDmsgInfo&&t.allNodes.forEach((function(e){e.dmsgServerPk_label=BE.getCompleteLabel(t.storageService,t.translateService,e.dmsgServerPk)})),t.dataFilterer.setData(t.allNodes),t.loading=!1,t.snackbarService.closeCurrentIfTemporaryError(),t.lastUpdate=e.momentOfLastCorrectUpdate,t.secondsSinceLastUpdate=Math.floor((Date.now()-e.momentOfLastCorrectUpdate)/1e3),t.errorsUpdating=!1,t.lastUpdateRequestedManually&&(t.snackbarService.showDone("common.refreshed",null),t.lastUpdateRequestedManually=!1)):e.error&&(t.errorsUpdating||t.snackbarService.showError(t.loading?"common.loading-error":"nodes.error-load",null,!0,e.error),t.errorsUpdating=!0))}))})))}))},t.prototype.recalculateElementsToShow=function(){var t=this;if(this.currentPage=this.currentPageInUrl,this.filteredNodes){var e=xx.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredNodes.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);var n=e*(this.currentPage-1);this.nodesToShow=this.filteredNodes.slice(n,n+e)}else this.nodesToShow=null;this.nodesToShow&&(this.nodesHealthInfo=new Map,this.nodesToShow.forEach((function(e){t.nodesHealthInfo.set(e.localPk,t.nodeService.getHealthStatus(e))})),this.dataSource=this.nodesToShow)},t.prototype.logout=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.componentInstance.closeModal(),t.authService.logout().subscribe((function(){return t.router.navigate(["login"])}),(function(){return t.snackbarService.showError("common.logout-error")}))}))},t.prototype.updateAll=function(){if(this.dataSource&&0!==this.dataSource.length){var t=[];this.dataSource.forEach((function(e){t.push({key:e.localPk,label:e.label})})),JP.openDialog(this.dialog,t)}else this.snackbarService.showError("nodes.no-visors-to-update")},t.prototype.recursivelyUpdateWallets=function(t,e,n){var i=this;return void 0===n&&(n=0),this.nodeService.update(t[t.length-1]).pipe(yv((function(){return pg(null)})),st((function(r){return r&&r.updated&&!r.error?i.snackbarService.showDone(i.translateService.instant("nodes.update.done",{name:e[e.length-1]})):(i.snackbarService.showError(i.translateService.instant("nodes.update.update-error",{name:e[e.length-1]})),n+=1),t.pop(),e.pop(),t.length>=1?i.recursivelyUpdateWallets(t,e,n):pg(n)})))},t.prototype.showOptionsDialog=function(t){var e=this,n=[{icon:"filter_none",label:"nodes.copy-key"}];this.showDmsgInfo&&n.push({icon:"filter_none",label:"nodes.copy-dmsg"}),n.push({icon:"short_text",label:"labeled-element.edit-label"}),t.online||n.push({icon:"close",label:"nodes.delete-node"}),DE.openDialog(this.dialog,n,"common.options").afterClosed().subscribe((function(n){1===n?e.copySpecificTextToClipboard(t.localPk):e.showDmsgInfo?2===n?e.copySpecificTextToClipboard(t.dmsgServerPk):3===n?e.showEditLabelDialog(t):4===n&&e.deleteNode(t):2===n?e.showEditLabelDialog(t):3===n&&e.deleteNode(t)}))},t.prototype.copyToClipboard=function(t){var e=this;this.showDmsgInfo?DE.openDialog(this.dialog,[{icon:"filter_none",label:"nodes.key"},{icon:"filter_none",label:"nodes.dmsg-server"}],"common.options").afterClosed().subscribe((function(n){1===n?e.copySpecificTextToClipboard(t.localPk):2===n&&e.copySpecificTextToClipboard(t.dmsgServerPk)})):this.copySpecificTextToClipboard(t.localPk)},t.prototype.copySpecificTextToClipboard=function(t){this.clipboardService.copy(t)&&this.snackbarService.showDone("copy.copied")},t.prototype.showEditLabelDialog=function(t){var e=this,n=this.storageService.getLabelInfo(t.localPk);n||(n={id:t.localPk,label:"",identifiedElementType:Gb.Node}),mE.openDialog(this.dialog,n).afterClosed().subscribe((function(t){t&&e.forceDataRefresh()}))},t.prototype.deleteNode=function(t){var e=this,n=SE.createConfirmationDialog(this.dialog,"nodes.delete-node-confirmation");n.componentInstance.operationAccepted.subscribe((function(){n.close(),e.storageService.setLocalNodesAsHidden([t.localPk]),e.forceDataRefresh(),e.snackbarService.showDone("nodes.deleted")}))},t.prototype.removeOffline=function(){var t=this,e="nodes.delete-all-offline-confirmation";this.dataFilterer.currentFiltersTexts&&this.dataFilterer.currentFiltersTexts.length>0&&(e="nodes.delete-all-filtered-offline-confirmation");var n=SE.createConfirmationDialog(this.dialog,e);n.componentInstance.operationAccepted.subscribe((function(){n.close();var e=[];t.filteredNodes.forEach((function(t){t.online||e.push(t.localPk)})),e.length>0&&(t.storageService.setLocalNodesAsHidden(e),t.forceDataRefresh(),1===e.length?t.snackbarService.showDone("nodes.deleted-singular"):t.snackbarService.showDone("nodes.deleted-plural",{number:e.length}))}))},t.prototype.open=function(t){t.online&&this.router.navigate(["nodes",t.localPk])},t.\u0275fac=function(e){return new(e||t)(rs(fE),rs(ub),rs(jx),rs(rC),rs(Kb),rs(Mc),rs(Sx),rs(LE),rs(hx),rs(z_))},t.\u0275cmp=Fe({type:t,selectors:[["app-node-list"]],decls:2,vars:2,consts:[["class","flex-column h-100 w-100",4,"ngIf"],["class","row",4,"ngIf"],[1,"flex-column","h-100","w-100"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton"],[1,"h-100"],[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData","refreshRequested","optionSelected"],[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],["class","filter-label subtle-transparent-button cursor-pointer",3,"click",4,"ngIf"],[1,"options"],[1,"options-container"],["class","small-icon",3,"inline","matTooltip","click",4,"ngIf"],[3,"matMenuTriggerFor",4,"ngIf"],[3,"overlapTrigger"],["selectionMenu","matMenu"],["mat-menu-item","",3,"disabled","click"],[3,"currentPage","numberOfPages","linkParts","queryParams",4,"ngIf"],["class","rounded-elevated-box mt-3",4,"ngIf"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],["class","item",4,"ngFor","ngForOf"],[1,"transparent-50"],[1,"item"],[4,"ngIf"],[1,"small-icon",3,"inline","matTooltip","click"],[3,"matMenuTriggerFor"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow","full-node-list-margins"],["class","responsive-table-translucid d-none d-md-table","cellspacing","0","cellpadding","0",4,"ngIf"],["class","responsive-table-translucid d-md-none nowrap","cellspacing","0","cellpadding","0",4,"ngIf"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table"],[1,"sortable-column","small-column",3,"matTooltip","click"],[1,"hypervisor-icon","gray-text"],[3,"inline",4,"ngIf"],[1,"dot-outline-gray"],[1,"sortable-column","labels",3,"click"],[1,"sortable-column",3,"click"],["class","sortable-column",3,"click",4,"ngIf"],[1,"actions"],["class","selectable",3,"click",4,"ngFor","ngForOf"],[3,"inline"],[1,"selectable",3,"click"],["class","hypervisor-icon",3,"inline","matTooltip",4,"ngIf"],[3,"matTooltip"],[1,"actions",3,"click"],["mat-icon-button","",1,"big-action-button","transparent-button",3,"matTooltip","click"],["mat-icon-button","","class","big-action-button transparent-button",3,"matTooltip","click",4,"ngIf"],[1,"hypervisor-icon",3,"inline","matTooltip"],["shortTextLength","4",3,"short","id","elementType","labelEdited"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none","nowrap"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],["class","list-row",4,"ngIf"],[1,"list-row"],[1,"list-row","long-content"],["class","list-row long-content",4,"ngIf"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"matTooltip","click"],[1,"hypervisor-icon",3,"inline"],[1,"yellow-text","title"],[3,"id","elementType","labelEdited"],[1,"box-internal-container","font-sm"],[1,"alert-icon",3,"inline"],["class","font-sm",4,"ngIf"],[1,"font-sm"]],template:function(t,e){1&t&&(ns(0,cA,4,5,"div",0),ns(1,ZA,20,24,"div",1)),2&t&&(os("ngIf",e.loading),Gr(1),os("ngIf",!e.loading))},directives:[wh,qO,gC,vh,cO,rO,bh,US,jL,pO,lA,lS,BE],pipes:[px],styles:[".labels[_ngcontent-%COMP%]{width:15%}.actions[_ngcontent-%COMP%]{text-align:right;width:120px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}.hypervisor-icon[_ngcontent-%COMP%]{font-size:14px!important;line-height:14px!important;position:relative;top:2px;margin-left:2px;color:#d48b05}.gray-text[_ngcontent-%COMP%]{color:#777!important}.small-column[_ngcontent-%COMP%]{width:1px}.online-warning[_ngcontent-%COMP%]{-webkit-animation:alert-blinking 1s linear infinite;animation:alert-blinking 1s linear infinite}@-webkit-keyframes alert-blinking{50%{opacity:.5}}@keyframes alert-blinking{50%{opacity:.5}}"]}),t}(),QA=["terminal"],XA=["dialogContent"],tI=function(){function t(t,e,n,i){this.data=t,this.renderer=e,this.apiService=n,this.translate=i,this.history=[],this.historyIndex=0,this.currentInputText=""}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.largeModalWidth,e.open(t,i)},t.prototype.keyEvent=function(t){this.terminal.hasFocus()&&this.history.length>0&&(38===t.keyCode&&(this.historyIndex===this.history.length&&(this.currentInputText=this.terminal.getInputContent()),this.historyIndex=this.historyIndex>0?this.historyIndex-1:0,this.terminal.changeInputContent(this.history[this.historyIndex])),40===t.keyCode&&(this.historyIndex=this.historyIndex/g,">")).replace(/\n/g,"
      ")).replace(/\t/g," ")).replace(/ /g," "),this.terminal.print(n),setTimeout((function(){e.dialogContentElement.nativeElement.scrollTop=e.dialogContentElement.nativeElement.scrollHeight}))},t.\u0275fac=function(e){return new(e||t)(rs(Fx),rs(Yl),rs(eC),rs(hx))},t.\u0275cmp=Fe({type:t,selectors:[["app-basic-terminal"]],viewQuery:function(t,e){var n;1&t&&(Uu(QA,!0),Uu(XA,!0)),2&t&&(zu(n=Zu())&&(e.terminalElement=n.first),zu(n=Zu())&&(e.dialogContentElement=n.first))},hostBindings:function(t,e){1&t&&vs("keyup",(function(t){return e.keyEvent(t)}),!1,bi)},decls:7,vars:5,consts:[[3,"headline","includeScrollableArea","includeVerticalMargins"],[3,"click"],["dialogContent",""],[1,"wrapper"],["terminal",""]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"mat-dialog-content",1,2),vs("click",(function(){return e.focusTerminal()})),ls(4,"div",3),cs(5,"div",null,4),us(),us(),us()),2&t&&os("headline",Lu(1,3,"actions.terminal.title")+" - "+e.data.label+" ("+e.data.pk+")")("includeScrollableArea",!1)("includeVerticalMargins",!1)},directives:[xL,Wx],pipes:[px],styles:[".mat-dialog-content[_ngcontent-%COMP%]{padding:0;margin-bottom:-24px;background:#000;height:100000px}.wrapper[_ngcontent-%COMP%]{padding:20px}.wrapper[_ngcontent-%COMP%] div[_ngcontent-%COMP%]{word-break:break-all}"]}),t}(),eI=function(){function t(t,e){this.options=[],this.dialog=t.get(jx),this.router=t.get(ub),this.snackbarService=t.get(Sx),this.nodeService=t.get(fE),this.translateService=t.get(hx),this.storageService=t.get(Kb),this.options=[{name:"actions.menu.terminal",actionName:"terminal",icon:"laptop"},{name:"actions.menu.reboot",actionName:"reboot",icon:"rotate_right"},{name:"actions.menu.update",actionName:"update",icon:"get_app"}],this.showingFullList=e,this.returnButtonText=e?"node.title":"nodes.title"}return t.prototype.setCurrentNode=function(t){this.currentNode=t},t.prototype.setCurrentNodeKey=function(t){this.currentNodeKey=t},t.prototype.performAction=function(t){"terminal"===t?this.terminal():"update"===t?this.update():"reboot"===t?this.reboot():null===t&&this.back()},t.prototype.dispose=function(){this.rebootSubscription&&this.rebootSubscription.unsubscribe(),this.updateSubscription&&this.updateSubscription.unsubscribe()},t.prototype.reboot=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"actions.reboot.confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.componentInstance.showProcessing(),t.rebootSubscription=t.nodeService.reboot(t.currentNodeKey).subscribe((function(){t.snackbarService.showDone("actions.reboot.done"),e.close()}),(function(t){t=Mx(t),e.componentInstance.showDone("confirmation.error-header-text",t.translatableErrorMsg)}))}))},t.prototype.update=function(){var t=this.storageService.getLabelInfo(this.currentNodeKey);JP.openDialog(this.dialog,[{key:this.currentNodeKey,label:t?t.label:""}])},t.prototype.terminal=function(){var t=this;DE.openDialog(this.dialog,[{icon:"launch",label:"actions.terminal-options.full"},{icon:"open_in_browser",label:"actions.terminal-options.simple"}],"common.options").afterClosed().subscribe((function(e){if(1===e){var n=window.location.protocol,i=window.location.host.replace("localhost:4200","127.0.0.1:8000");window.open(n+"//"+i+"/pty/"+t.currentNodeKey,"_blank","noopener noreferrer")}else 2===e&&tI.openDialog(t.dialog,{pk:t.currentNodeKey,label:t.currentNode?t.currentNode.label:""})}))},t.prototype.back=function(){this.router.navigate(this.showingFullList?["nodes",this.currentNodeKey]:["nodes"])},t}();function nI(t,e){1&t&&cs(0,"app-loading-indicator")}function iI(t,e){1&t&&(ls(0,"div",6),ls(1,"div"),ls(2,"mat-icon",7),rl(3,"error"),us(),rl(4),Du(5,"translate"),us(),us()),2&t&&(Gr(2),os("inline",!0),Gr(2),ol(" ",Lu(5,2,"node.not-found")," "))}function rI(t,e){if(1&t){var n=ps();ls(0,"div",2),ls(1,"div"),ls(2,"app-top-bar",3),vs("optionSelected",(function(t){return Cn(n),Ms().performAction(t)})),us(),us(),ns(3,nI,1,0,"app-loading-indicator",4),ns(4,iI,6,4,"div",5),us()}if(2&t){var i=Ms();Gr(2),os("titleParts",i.titleParts)("tabsData",i.tabsData)("selectedTabIndex",i.selectedTabIndex)("showUpdateButton",!1)("optionsData",i.nodeActionsHelper?i.nodeActionsHelper.options:null)("returnText",i.nodeActionsHelper?i.nodeActionsHelper.returnButtonText:""),Gr(1),os("ngIf",!i.notFound),Gr(1),os("ngIf",i.notFound)}}function aI(t,e){1&t&&cs(0,"app-node-info-content",15),2&t&&os("nodeInfo",Ms(2).node)}var oI=function(t,e){return{"main-area":t,"full-size-main-area":e}},sI=function(t){return{"d-none":t}};function lI(t,e){if(1&t){var n=ps();ls(0,"div",8),ls(1,"div",9),ls(2,"app-top-bar",10),vs("optionSelected",(function(t){return Cn(n),Ms().performAction(t)}))("refreshRequested",(function(){return Cn(n),Ms().forceDataRefresh(!0)})),us(),us(),ls(3,"div",9),ls(4,"div",11),ls(5,"div",12),cs(6,"router-outlet"),us(),us(),ls(7,"div",13),ns(8,aI,1,1,"app-node-info-content",14),us(),us(),us()}if(2&t){var i=Ms();Gr(2),os("titleParts",i.titleParts)("tabsData",i.tabsData)("selectedTabIndex",i.selectedTabIndex)("secondsSinceLastUpdate",i.secondsSinceLastUpdate)("showLoading",i.updating)("showAlert",i.errorsUpdating)("refeshRate",i.storageService.getRefreshTime())("optionsData",i.nodeActionsHelper?i.nodeActionsHelper.options:null)("returnText",i.nodeActionsHelper?i.nodeActionsHelper.returnButtonText:""),Gr(2),os("ngClass",Mu(12,oI,!i.showingInfo&&!i.showingFullList,i.showingInfo||i.showingFullList)),Gr(3),os("ngClass",wu(15,sI,i.showingInfo||i.showingFullList)),Gr(1),os("ngIf",!i.showingInfo&&!i.showingFullList)}}var uI=function(){function t(e,n,i,r,a,o,s){var l=this;this.storageService=e,this.nodeService=n,this.route=i,this.ngZone=r,this.snackbarService=a,this.injector=o,this.notFound=!1,this.titleParts=[],this.tabsData=[],this.selectedTabIndex=-1,this.showingInfo=!1,this.showingFullList=!1,this.secondsSinceLastUpdate=0,this.lastUpdate=Date.now(),this.updating=!1,this.errorsUpdating=!1,this.lastUpdateRequestedManually=!1,t.nodeSubject=new Ub(1),t.currentInstanceInternal=this,this.navigationsSubscription=s.events.subscribe((function(e){e.urlAfterRedirects&&(t.currentNodeKey=l.route.snapshot.params.key,l.nodeActionsHelper&&l.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),l.lastUrl=e.urlAfterRedirects,l.updateTabBar(),l.navigationsSubscription.unsubscribe(),l.nodeService.startRequestingSpecificNode(t.currentNodeKey),l.startGettingData())}))}return t.refreshCurrentDisplayedData=function(){t.currentInstanceInternal&&t.currentInstanceInternal.forceDataRefresh(!1)},t.getCurrentNodeKey=function(){return t.currentNodeKey},Object.defineProperty(t,"currentNode",{get:function(){return t.nodeSubject.asObservable()},enumerable:!1,configurable:!0}),t.prototype.ngOnInit=function(){var t=this;this.ngZone.runOutsideAngular((function(){t.updateTimeSubscription=gk(5e3,5e3).subscribe((function(){return t.ngZone.run((function(){t.secondsSinceLastUpdate=Math.floor((Date.now()-t.lastUpdate)/1e3)}))}))}))},t.prototype.updateTabBar=function(){if(this.lastUrl&&(this.lastUrl.includes("/info")||this.lastUrl.includes("/routing")||this.lastUrl.includes("/apps")&&!this.lastUrl.includes("/apps-list")))this.titleParts=["nodes.title","node.title"],this.tabsData=[{icon:"info",label:"node.tabs.info",onlyIfLessThanLg:!0,linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"info"]:null},{icon:"shuffle",label:"node.tabs.routing",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"routing"]:null},{icon:"apps",label:"node.tabs.apps",linkParts:t.currentNodeKey?["/nodes",t.currentNodeKey,"apps"]:null}],this.selectedTabIndex=1,this.showingInfo=!1,this.lastUrl.includes("/info")&&(this.selectedTabIndex=0,this.showingInfo=!0),this.lastUrl.includes("/apps")&&(this.selectedTabIndex=2),this.showingFullList=!1,this.nodeActionsHelper=new eI(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);else if(this.lastUrl&&(this.lastUrl.includes("/transports")||this.lastUrl.includes("/routes")||this.lastUrl.includes("/apps-list"))){this.showingFullList=!0,this.showingInfo=!1,this.nodeActionsHelper=new eI(this.injector,this.showingFullList),this.nodeActionsHelper.setCurrentNodeKey(t.currentNodeKey),this.node&&this.nodeActionsHelper.setCurrentNode(this.node);var e="transports";this.lastUrl.includes("/routes")?e="routes":this.lastUrl.includes("/apps-list")&&(e="apps.apps-list"),this.titleParts=["nodes.title","node.title",e+".title"],this.tabsData=[{icon:"view_headline",label:e+".list-title",linkParts:[]}],this.selectedTabIndex=0}else this.titleParts=[],this.tabsData=[]},t.prototype.performAction=function(t){this.nodeActionsHelper.performAction(t)},t.prototype.forceDataRefresh=function(t){void 0===t&&(t=!1),t&&(this.lastUpdateRequestedManually=!0),this.nodeService.forceSpecificNodeRefresh()},t.prototype.startGettingData=function(){var e=this;this.dataSubscription=this.nodeService.updatingSpecificNode.subscribe((function(t){return e.updating=t})),this.ngZone.runOutsideAngular((function(){e.dataSubscription.add(e.nodeService.specificNode.subscribe((function(n){e.ngZone.run((function(){if(n)if(n.data&&!n.error)e.node=n.data,t.nodeSubject.next(e.node),e.nodeActionsHelper&&e.nodeActionsHelper.setCurrentNode(e.node),e.snackbarService.closeCurrentIfTemporaryError(),e.lastUpdate=n.momentOfLastCorrectUpdate,e.secondsSinceLastUpdate=Math.floor((Date.now()-n.momentOfLastCorrectUpdate)/1e3),e.errorsUpdating=!1,e.lastUpdateRequestedManually&&(e.snackbarService.showDone("common.refreshed",null),e.lastUpdateRequestedManually=!1);else if(n.error){if(n.error.originalError&&400===n.error.originalError.status)return void(e.notFound=!0);e.errorsUpdating||e.snackbarService.showError(e.node?"node.error-load":"common.loading-error",null,!0,n.error),e.errorsUpdating=!0}}))})))}))},t.prototype.ngOnDestroy=function(){this.nodeService.stopRequestingSpecificNode(),this.dataSubscription.unsubscribe(),this.updateTimeSubscription.unsubscribe(),this.navigationsSubscription.unsubscribe(),t.currentInstanceInternal=void 0,t.currentNodeKey=void 0,t.nodeSubject.complete(),t.nodeSubject=void 0,this.nodeActionsHelper.dispose()},t.\u0275fac=function(e){return new(e||t)(rs(Kb),rs(fE),rs(z_),rs(Mc),rs(Sx),rs(zo),rs(ub))},t.\u0275cmp=Fe({type:t,selectors:[["app-node"]],decls:2,vars:2,consts:[["class","flex-column h-100 w-100",4,"ngIf"],["class","row",4,"ngIf"],[1,"flex-column","h-100","w-100"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","optionsData","returnText","optionSelected"],[4,"ngIf"],["class","w-100 h-100 d-flex not-found-label",4,"ngIf"],[1,"w-100","h-100","d-flex","not-found-label"],[3,"inline"],[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","selectedTabIndex","secondsSinceLastUpdate","showLoading","showAlert","refeshRate","optionsData","returnText","optionSelected","refreshRequested"],[3,"ngClass"],[1,"d-flex","flex-column","h-100"],[1,"right-bar",3,"ngClass"],[3,"nodeInfo",4,"ngIf"],[3,"nodeInfo"]],template:function(t,e){1&t&&(ns(0,rI,5,8,"div",0),ns(1,lI,9,17,"div",1)),2&t&&(os("ngIf",!e.node),Gr(1),os("ngIf",e.node))},styles:[".not-found-label[_ngcontent-%COMP%]{align-items:center;justify-content:center;font-size:1rem;position:relative}.not-found-label[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:5px;font-size:22px;opacity:.5;margin-right:3px}.full-size-main-area[_ngcontent-%COMP%], .main-area[_ngcontent-%COMP%]{width:100%}@media (min-width:992px){.main-area[_ngcontent-%COMP%]{width:73%;padding-right:20px;float:left}}.right-bar[_ngcontent-%COMP%]{width:27%;float:right;display:none}@media (min-width:992px){.right-bar[_ngcontent-%COMP%]{display:block;width:27%;float:right}}"]}),t}();function cI(t,e){if(1&t&&(ls(0,"mat-option",8),rl(1),Du(2,"translate"),us()),2&t){var n=e.$implicit;Ds("value",n),Gr(1),sl(" ",n," ",Lu(2,3,"settings.seconds")," ")}}var dI=function(){function t(t,e,n){this.formBuilder=t,this.storageService=e,this.snackbarService=n,this.timesList=["3","5","10","15","30","60","90","150","300"]}return t.prototype.ngOnInit=function(){var t=this;this.form=this.formBuilder.group({refreshRate:[this.storageService.getRefreshTime().toString()]}),this.subscription=this.form.get("refreshRate").valueChanges.subscribe((function(e){t.storageService.setRefreshTime(e),t.snackbarService.showDone("settings.refresh-rate-confirmation")}))},t.prototype.ngOnDestroy=function(){this.subscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)(rs(pL),rs(Kb),rs(Sx))},t.\u0275cmp=Fe({type:t,selectors:[["app-refresh-rate"]],decls:11,vars:9,consts:[[1,"rounded-elevated-box"],[1,"box-internal-container","overflow"],[1,"white-form-help-icon-container"],[3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field"],["formControlName","refreshRate",3,"placeholder"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ls(2,"div",2),ls(3,"mat-icon",3),Du(4,"translate"),rl(5," help "),us(),us(),ls(6,"form",4),ls(7,"mat-form-field",5),ls(8,"mat-select",6),Du(9,"translate"),ns(10,cI,3,5,"mat-option",7),us(),us(),us(),us(),us()),2&t&&(Gr(3),os("inline",!0)("matTooltip",Lu(4,5,"settings.refresh-rate-help")),Gr(3),os("formGroup",e.form),Gr(2),os("placeholder",Lu(9,7,"settings.refresh-rate")),Gr(2),os("ngForOf",e.timesList))},directives:[US,jL,jD,PC,UD,xT,uP,EC,QD,bh,QM],pipes:[px],styles:["mat-form-field[_ngcontent-%COMP%]{margin-right:32px}mat-form-field[_ngcontent-%COMP%] .mat-form-field-wrapper{padding-bottom:0!important}mat-form-field[_ngcontent-%COMP%] .mat-form-field-underline{bottom:0!important}"]}),t}(),hI=["input"],fI=function(){return{enterDuration:150}},pI=["*"],mI=new se("mat-checkbox-default-options",{providedIn:"root",factory:function(){return{color:"accent",clickAction:"check-indeterminate"}}}),gI=new se("mat-checkbox-click-action"),vI=0,_I={provide:_C,useExisting:Ut((function(){return kI})),multi:!0},yI=function t(){_(this,t)},bI=DM(xM(CM(SM((function t(e){_(this,t),this._elementRef=e}))))),kI=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s,l,u){var c;return _(this,n),(c=e.call(this,t))._changeDetectorRef=i,c._focusMonitor=r,c._ngZone=a,c._clickAction=s,c._animationMode=l,c._options=u,c.ariaLabel="",c.ariaLabelledby=null,c._uniqueId="mat-checkbox-".concat(++vI),c.id=c._uniqueId,c.labelPosition="after",c.name=null,c.change=new Ou,c.indeterminateChange=new Ou,c._onTouched=function(){},c._currentAnimationClass="",c._currentCheckState=0,c._controlValueAccessorChangeFn=function(){},c._checked=!1,c._disabled=!1,c._indeterminate=!1,c._options=c._options||{},c._options.color&&(c.color=c._options.color),c.tabIndex=parseInt(o)||0,c._clickAction=c._clickAction||c._options.clickAction,c}return b(n,[{key:"ngAfterViewInit",value:function(){var t=this;this._focusMonitor.monitor(this._elementRef,!0).subscribe((function(e){e||Promise.resolve().then((function(){t._onTouched(),t._changeDetectorRef.markForCheck()}))})),this._syncIndeterminate(this._indeterminate)}},{key:"ngAfterViewChecked",value:function(){}},{key:"ngOnDestroy",value:function(){this._focusMonitor.stopMonitoring(this._elementRef)}},{key:"_isRippleDisabled",value:function(){return this.disableRipple||this.disabled}},{key:"_onLabelTextChange",value:function(){this._changeDetectorRef.detectChanges()}},{key:"writeValue",value:function(t){this.checked=!!t}},{key:"registerOnChange",value:function(t){this._controlValueAccessorChangeFn=t}},{key:"registerOnTouched",value:function(t){this._onTouched=t}},{key:"setDisabledState",value:function(t){this.disabled=t}},{key:"_getAriaChecked",value:function(){return this.checked?"true":this.indeterminate?"mixed":"false"}},{key:"_transitionCheckState",value:function(t){var e=this._currentCheckState,n=this._elementRef.nativeElement;if(e!==t&&(this._currentAnimationClass.length>0&&n.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(e,t),this._currentCheckState=t,this._currentAnimationClass.length>0)){n.classList.add(this._currentAnimationClass);var i=this._currentAnimationClass;this._ngZone.runOutsideAngular((function(){setTimeout((function(){n.classList.remove(i)}),1e3)}))}}},{key:"_emitChangeEvent",value:function(){var t=new yI;t.source=this,t.checked=this.checked,this._controlValueAccessorChangeFn(this.checked),this.change.emit(t)}},{key:"toggle",value:function(){this.checked=!this.checked}},{key:"_onInputClick",value:function(t){var e=this;t.stopPropagation(),this.disabled||"noop"===this._clickAction?this.disabled||"noop"!==this._clickAction||(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==this._clickAction&&Promise.resolve().then((function(){e._indeterminate=!1,e.indeterminateChange.emit(e._indeterminate)})),this.toggle(),this._transitionCheckState(this._checked?1:2),this._emitChangeEvent())}},{key:"focus",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"keyboard",e=arguments.length>1?arguments[1]:void 0;this._focusMonitor.focusVia(this._inputElement,t,e)}},{key:"_onInteractionEvent",value:function(t){t.stopPropagation()}},{key:"_getAnimationClassForCheckStateTransition",value:function(t,e){if("NoopAnimations"===this._animationMode)return"";var n="";switch(t){case 0:if(1===e)n="unchecked-checked";else{if(3!=e)return"";n="unchecked-indeterminate"}break;case 2:n=1===e?"unchecked-checked":"unchecked-indeterminate";break;case 1:n=2===e?"checked-unchecked":"checked-indeterminate";break;case 3:n=1===e?"indeterminate-checked":"indeterminate-unchecked"}return"mat-checkbox-anim-".concat(n)}},{key:"_syncIndeterminate",value:function(t){var e=this._inputElement;e&&(e.nativeElement.indeterminate=t)}},{key:"inputId",get:function(){return"".concat(this.id||this._uniqueId,"-input")}},{key:"required",get:function(){return this._required},set:function(t){this._required=Jb(t)}},{key:"checked",get:function(){return this._checked},set:function(t){t!=this.checked&&(this._checked=t,this._changeDetectorRef.markForCheck())}},{key:"disabled",get:function(){return this._disabled},set:function(t){var e=Jb(t);e!==this.disabled&&(this._disabled=e,this._changeDetectorRef.markForCheck())}},{key:"indeterminate",get:function(){return this._indeterminate},set:function(t){var e=t!=this._indeterminate;this._indeterminate=Jb(t),e&&(this._transitionCheckState(this._indeterminate?3:this.checked?1:2),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}}]),n}(bI);return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(xo),rs(dM),rs(Mc),as("tabindex"),rs(gI,8),rs(cg,8),rs(mI,8))},t.\u0275cmp=Fe({type:t,selectors:[["mat-checkbox"]],viewQuery:function(t,e){var n;1&t&&(Uu(hI,!0),Uu(jM,!0)),2&t&&(zu(n=Zu())&&(e._inputElement=n.first),zu(n=Zu())&&(e.ripple=n.first))},hostAttrs:[1,"mat-checkbox"],hostVars:12,hostBindings:function(t,e){2&t&&(cl("id",e.id),ts("tabindex",null),Vs("mat-checkbox-indeterminate",e.indeterminate)("mat-checkbox-checked",e.checked)("mat-checkbox-disabled",e.disabled)("mat-checkbox-label-before","before"==e.labelPosition)("_mat-animation-noopable","NoopAnimations"===e._animationMode))},inputs:{disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],id:"id",labelPosition:"labelPosition",name:"name",required:"required",checked:"checked",disabled:"disabled",indeterminate:"indeterminate",ariaDescribedby:["aria-describedby","ariaDescribedby"],value:"value"},outputs:{change:"change",indeterminateChange:"indeterminateChange"},exportAs:["matCheckbox"],features:[Cl([_I]),fl],ngContentSelectors:pI,decls:17,vars:20,consts:[[1,"mat-checkbox-layout"],["label",""],[1,"mat-checkbox-inner-container"],["type","checkbox",1,"mat-checkbox-input","cdk-visually-hidden",3,"id","required","checked","disabled","tabIndex","change","click"],["input",""],["matRipple","",1,"mat-checkbox-ripple","mat-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleRadius","matRippleCentered","matRippleAnimation"],[1,"mat-ripple-element","mat-checkbox-persistent-ripple"],[1,"mat-checkbox-frame"],[1,"mat-checkbox-background"],["version","1.1","focusable","false","viewBox","0 0 24 24",0,"xml","space","preserve",1,"mat-checkbox-checkmark"],["fill","none","stroke","white","d","M4.1,12.7 9,17.6 20.3,6.3",1,"mat-checkbox-checkmark-path"],[1,"mat-checkbox-mixedmark"],[1,"mat-checkbox-label",3,"cdkObserveContent"],["checkboxLabel",""],[2,"display","none"]],template:function(t,e){if(1&t&&(xs(),ls(0,"label",0,1),ls(2,"div",2),ls(3,"input",3,4),vs("change",(function(t){return e._onInteractionEvent(t)}))("click",(function(t){return e._onInputClick(t)})),us(),ls(5,"div",5),cs(6,"div",6),us(),cs(7,"div",7),ls(8,"div",8),Xn(),ls(9,"svg",9),cs(10,"path",10),us(),ti(),cs(11,"div",11),us(),us(),ls(12,"span",12,13),vs("cdkObserveContent",(function(){return e._onLabelTextChange()})),ls(14,"span",14),rl(15,"\xa0"),us(),Cs(16),us(),us()),2&t){var n=is(1),i=is(13);ts("for",e.inputId),Gr(2),Vs("mat-checkbox-inner-container-no-side-margin",!i.textContent||!i.textContent.trim()),Gr(1),os("id",e.inputId)("required",e.required)("checked",e.checked)("disabled",e.disabled)("tabIndex",e.tabIndex),ts("value",e.value)("name",e.name)("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby)("aria-checked",e._getAriaChecked())("aria-describedby",e.ariaDescribedby),Gr(2),os("matRippleTrigger",n)("matRippleDisabled",e._isRippleDisabled())("matRippleRadius",20)("matRippleCentered",!0)("matRippleAnimation",ku(19,fI))}},directives:[jM,Ww],styles:["@keyframes mat-checkbox-fade-in-background{0%{opacity:0}50%{opacity:1}}@keyframes mat-checkbox-fade-out-background{0%,50%{opacity:1}100%{opacity:0}}@keyframes mat-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:22.910259}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1)}100%{stroke-dashoffset:0}}@keyframes mat-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mat-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);stroke-dashoffset:0}to{stroke-dashoffset:-22.910259}}@keyframes mat-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(45deg)}}@keyframes mat-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:0;transform:rotate(45deg)}to{opacity:1;transform:rotate(360deg)}}@keyframes mat-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 0.1);opacity:0;transform:rotate(-45deg)}to{opacity:1;transform:rotate(0deg)}}@keyframes mat-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);opacity:1;transform:rotate(0deg)}to{opacity:0;transform:rotate(315deg)}}@keyframes mat-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;opacity:1;transform:scaleX(1)}32.8%,100%{opacity:0;transform:scaleX(0)}}.mat-checkbox-background,.mat-checkbox-frame{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:2px;box-sizing:border-box;pointer-events:none}.mat-checkbox{transition:background 400ms cubic-bezier(0.25, 0.8, 0.25, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);cursor:pointer;-webkit-tap-highlight-color:transparent}._mat-animation-noopable.mat-checkbox{transition:none;animation:none}.mat-checkbox .mat-ripple-element:not(.mat-checkbox-persistent-ripple){opacity:.16}.mat-checkbox-layout{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:inherit;align-items:baseline;vertical-align:middle;display:inline-flex;white-space:nowrap}.mat-checkbox-label{-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.mat-checkbox-inner-container{display:inline-block;height:16px;line-height:0;margin:auto;margin-right:8px;order:0;position:relative;vertical-align:middle;white-space:nowrap;width:16px;flex-shrink:0}[dir=rtl] .mat-checkbox-inner-container{margin-left:8px;margin-right:auto}.mat-checkbox-inner-container-no-side-margin{margin-left:0;margin-right:0}.mat-checkbox-frame{background-color:transparent;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1);border-width:2px;border-style:solid}._mat-animation-noopable .mat-checkbox-frame{transition:none}.cdk-high-contrast-active .mat-checkbox.cdk-keyboard-focused .mat-checkbox-frame{border-style:dotted}.mat-checkbox-background{align-items:center;display:inline-flex;justify-content:center;transition:background-color 90ms cubic-bezier(0, 0, 0.2, 0.1),opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}._mat-animation-noopable .mat-checkbox-background{transition:none}.cdk-high-contrast-active .mat-checkbox .mat-checkbox-background{background:none}.mat-checkbox-persistent-ripple{width:100%;height:100%;transform:none}.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:.04}.mat-checkbox.cdk-keyboard-focused .mat-checkbox-persistent-ripple{opacity:.12}.mat-checkbox-persistent-ripple,.mat-checkbox.mat-checkbox-disabled .mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{opacity:0}@media(hover: none){.mat-checkbox-inner-container:hover .mat-checkbox-persistent-ripple{display:none}}.mat-checkbox-checkmark{top:0;left:0;right:0;bottom:0;position:absolute;width:100%}.mat-checkbox-checkmark-path{stroke-dashoffset:22.910259;stroke-dasharray:22.910259;stroke-width:2.1333333333px}.cdk-high-contrast-black-on-white .mat-checkbox-checkmark-path{stroke:#000 !important}.mat-checkbox-mixedmark{width:calc(100% - 6px);height:2px;opacity:0;transform:scaleX(0) rotate(0deg);border-radius:2px}.cdk-high-contrast-active .mat-checkbox-mixedmark{height:0;border-top:solid 2px;margin-top:2px}.mat-checkbox-label-before .mat-checkbox-inner-container{order:1;margin-left:8px;margin-right:auto}[dir=rtl] .mat-checkbox-label-before .mat-checkbox-inner-container{margin-left:auto;margin-right:8px}.mat-checkbox-checked .mat-checkbox-checkmark{opacity:1}.mat-checkbox-checked .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-checked .mat-checkbox-mixedmark{transform:scaleX(1) rotate(-45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark{opacity:0;transform:rotate(45deg)}.mat-checkbox-indeterminate .mat-checkbox-checkmark-path{stroke-dashoffset:0}.mat-checkbox-indeterminate .mat-checkbox-mixedmark{opacity:1;transform:scaleX(1) rotate(0deg)}.mat-checkbox-unchecked .mat-checkbox-background{background-color:transparent}.mat-checkbox-disabled{cursor:default}.cdk-high-contrast-active .mat-checkbox-disabled{opacity:.5}.mat-checkbox-anim-unchecked-checked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-checked .mat-checkbox-checkmark-path{animation:180ms linear 0ms mat-checkbox-unchecked-checked-checkmark-path}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-in-background}.mat-checkbox-anim-unchecked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-unchecked-indeterminate-mixedmark}.mat-checkbox-anim-checked-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-checked-unchecked .mat-checkbox-checkmark-path{animation:90ms linear 0ms mat-checkbox-checked-unchecked-checkmark-path}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-checkmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-checkmark}.mat-checkbox-anim-checked-indeterminate .mat-checkbox-mixedmark{animation:90ms linear 0ms mat-checkbox-checked-indeterminate-mixedmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-checkmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-checkmark}.mat-checkbox-anim-indeterminate-checked .mat-checkbox-mixedmark{animation:500ms linear 0ms mat-checkbox-indeterminate-checked-mixedmark}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-background{animation:180ms linear 0ms mat-checkbox-fade-out-background}.mat-checkbox-anim-indeterminate-unchecked .mat-checkbox-mixedmark{animation:300ms linear 0ms mat-checkbox-indeterminate-unchecked-mixedmark}.mat-checkbox-input{bottom:0;left:50%}.mat-checkbox .mat-checkbox-ripple{position:absolute;left:calc(50% - 20px);top:calc(50% - 20px);height:40px;width:40px;z-index:1;pointer-events:none}\n"],encapsulation:2,changeDetection:0}),t}(),wI={provide:IC,useExisting:Ut((function(){return MI})),multi:!0},MI=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return n}(nL);return t.\u0275fac=function(e){return SI(e||t)},t.\u0275dir=Ve({type:t,selectors:[["mat-checkbox","required","","formControlName",""],["mat-checkbox","required","","formControl",""],["mat-checkbox","required","","ngModel",""]],features:[Cl([wI]),fl]}),t}(),SI=Bi(MI),xI=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)}}),t}(),CI=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[BM,MM,Uw,xI],MM,xI]}),t}(),DI=function(t){return{number:t}},LI=function(){function t(){this.numberOfElements=0,this.linkParts=[""],this.queryParams={}}return t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-view-all-link"]],inputs:{numberOfElements:"numberOfElements",linkParts:"linkParts",queryParams:"queryParams"},decls:6,vars:9,consts:[[1,"main-container"],[3,"routerLink","queryParams"],[3,"inline"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"a",1),rl(2),Du(3,"translate"),ls(4,"mat-icon",2),rl(5,"chevron_right"),us(),us(),us()),2&t&&(Gr(1),os("routerLink",e.linkParts)("queryParams",e.queryParams),Gr(1),ol(" ",Tu(3,4,"view-all-link.label",wu(7,DI,e.numberOfElements))," "),Gr(2),os("inline",!0))},directives:[hb,US],pipes:[px],styles:[".main-container[_ngcontent-%COMP%]{padding-top:20px;margin-bottom:4px;text-align:right;font-size:.875rem}@media (max-width:767px),(min-width:992px) and (max-width:1299px){.main-container[_ngcontent-%COMP%]{margin:0;padding:16px}}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{color:#f8f9f9;text-decoration:none}.main-container[_ngcontent-%COMP%] a[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:3px}"]}),t}();function TI(t,e){1&t&&(ls(0,"span",14),rl(1),Du(2,"translate"),ls(3,"mat-icon",15),Du(4,"translate"),rl(5,"help"),us(),us()),2&t&&(Gr(1),ol(" ",Lu(2,3,"labels.title")," "),Gr(2),os("inline",!0)("matTooltip",Lu(4,5,"labels.info")))}function EI(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms().$implicit;Gr(1),al(Lu(2,1,n.translatableValue))}}function PI(t,e){if(1&t&&(ds(0),rl(1),hs()),2&t){var n=Ms().$implicit;Gr(1),al(n.value)}}function OI(t,e){if(1&t&&(ls(0,"div",19),ls(1,"span"),rl(2),Du(3,"translate"),us(),ns(4,EI,3,3,"ng-container",20),ns(5,PI,2,1,"ng-container",20),us()),2&t){var n=e.$implicit;Gr(2),ol("",Lu(3,3,n.filterName),": "),Gr(2),os("ngIf",n.translatableValue),Gr(1),os("ngIf",n.value)}}function AI(t,e){if(1&t){var n=ps();ls(0,"div",16),vs("click",(function(){return Cn(n),Ms().dataFilterer.removeFilters()})),ns(1,OI,6,5,"div",17),ls(2,"div",18),rl(3),Du(4,"translate"),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngForOf",i.dataFilterer.currentFiltersTexts),Gr(2),al(Lu(4,2,"filters.press-to-remove"))}}function II(t,e){if(1&t){var n=ps();ls(0,"mat-icon",21),vs("click",(function(){return Cn(n),Ms().dataFilterer.changeFilters()})),Du(1,"translate"),rl(2,"filter_list"),us()}2&t&&os("inline",!0)("matTooltip",Lu(1,2,"filters.filter-action"))}function YI(t,e){if(1&t&&(ls(0,"mat-icon",22),rl(1,"more_horiz"),us()),2&t){Ms();var n=is(9);os("inline",!0)("matMenuTriggerFor",n)}}var FI=function(){return["/settings","labels"]};function RI(t,e){if(1&t&&cs(0,"app-paginator",23),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",ku(4,FI))("queryParams",n.dataFilterer.currentUrlQueryParams)}}function NI(t,e){if(1&t&&(ls(0,"mat-icon",36),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function HI(t,e){if(1&t&&(ls(0,"mat-icon",36),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function jI(t,e){if(1&t&&(ls(0,"mat-icon",36),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function BI(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td",38),ls(2,"mat-checkbox",39),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(3,"td"),rl(4),us(),ls(5,"td"),rl(6),us(),ls(7,"td"),rl(8),Du(9,"translate"),us(),ls(10,"td",29),ls(11,"button",40),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).delete(t.id)})),Du(12,"translate"),ls(13,"mat-icon",36),rl(14,"close"),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(2),os("checked",r.selections.get(i.id)),Gr(2),ol(" ",i.label," "),Gr(2),ol(" ",i.id," "),Gr(2),sl(" ",r.getLabelTypeIdentification(i)[0]," - ",Lu(9,7,r.getLabelTypeIdentification(i)[1])," "),Gr(3),os("matTooltip",Lu(12,9,"labels.delete")),Gr(2),os("inline",!0)}}function VI(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.label")))}function zI(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.inverted-order")))}function WI(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td"),ls(2,"div",33),ls(3,"div",41),ls(4,"mat-checkbox",39),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(5,"div",34),ls(6,"div",42),ls(7,"span",1),rl(8),Du(9,"translate"),us(),rl(10),us(),ls(11,"div",43),ls(12,"span",1),rl(13),Du(14,"translate"),us(),rl(15),us(),ls(16,"div",42),ls(17,"span",1),rl(18),Du(19,"translate"),us(),rl(20),Du(21,"translate"),us(),us(),cs(22,"div",44),ls(23,"div",35),ls(24,"button",45),vs("click",(function(t){Cn(n);var i=e.$implicit,r=Ms(2);return t.stopPropagation(),r.showOptionsDialog(i)})),Du(25,"translate"),ls(26,"mat-icon"),rl(27),us(),us(),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(4),os("checked",r.selections.get(i.id)),Gr(4),al(Lu(9,10,"labels.label")),Gr(2),ol(": ",i.label," "),Gr(3),al(Lu(14,12,"labels.id")),Gr(2),ol(": ",i.id," "),Gr(3),al(Lu(19,14,"labels.type")),Gr(2),sl(": ",r.getLabelTypeIdentification(i)[0]," - ",Lu(21,16,r.getLabelTypeIdentification(i)[1])," "),Gr(4),os("matTooltip",Lu(25,18,"common.options")),Gr(3),al("add")}}function UI(t,e){if(1&t&&cs(0,"app-view-all-link",46),2&t){var n=Ms(2);os("numberOfElements",n.filteredLabels.length)("linkParts",ku(3,FI))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var qI=function(t,e){return{"small-node-list-margins":t,"full-node-list-margins":e}},GI=function(t){return{"d-lg-none d-xl-table":t}},KI=function(t){return{"d-lg-table d-xl-none":t}};function JI(t,e){if(1&t){var n=ps();ls(0,"div",24),ls(1,"div",25),ls(2,"table",26),ls(3,"tr"),cs(4,"th"),ls(5,"th",27),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.labelSortData)})),rl(6),Du(7,"translate"),ns(8,NI,2,2,"mat-icon",28),us(),ls(9,"th",27),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.idSortData)})),rl(10),Du(11,"translate"),ns(12,HI,2,2,"mat-icon",28),us(),ls(13,"th",27),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.typeSortData)})),rl(14),Du(15,"translate"),ns(16,jI,2,2,"mat-icon",28),us(),cs(17,"th",29),us(),ns(18,BI,15,11,"tr",30),us(),ls(19,"table",31),ls(20,"tr",32),vs("click",(function(){return Cn(n),Ms().dataSorter.openSortingOrderModal()})),ls(21,"td"),ls(22,"div",33),ls(23,"div",34),ls(24,"div",1),rl(25),Du(26,"translate"),us(),ls(27,"div"),rl(28),Du(29,"translate"),ns(30,VI,3,3,"ng-container",20),ns(31,zI,3,3,"ng-container",20),us(),us(),ls(32,"div",35),ls(33,"mat-icon",36),rl(34,"keyboard_arrow_down"),us(),us(),us(),us(),us(),ns(35,WI,28,20,"tr",30),us(),ns(36,UI,1,4,"app-view-all-link",37),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngClass",Mu(27,qI,i.showShortList_,!i.showShortList_)),Gr(1),os("ngClass",wu(30,GI,i.showShortList_)),Gr(4),ol(" ",Lu(7,17,"labels.label")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.labelSortData),Gr(2),ol(" ",Lu(11,19,"labels.id")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.idSortData),Gr(2),ol(" ",Lu(15,21,"labels.type")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.typeSortData),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngClass",wu(32,KI,i.showShortList_)),Gr(6),al(Lu(26,23,"tables.sorting-title")),Gr(3),ol("",Lu(29,25,i.dataSorter.currentSortingColumn.label)," "),Gr(2),os("ngIf",i.dataSorter.currentlySortingByLabel),Gr(1),os("ngIf",i.dataSorter.sortingInReverseOrder),Gr(2),os("inline",!0),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngIf",i.showShortList_&&i.numberOfPages>1)}}function ZI(t,e){1&t&&(ls(0,"span",50),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"labels.empty")))}function $I(t,e){1&t&&(ls(0,"span",50),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"labels.empty-with-filter")))}function QI(t,e){if(1&t&&(ls(0,"div",24),ls(1,"div",47),ls(2,"mat-icon",48),rl(3,"warning"),us(),ns(4,ZI,3,3,"span",49),ns(5,$I,3,3,"span",49),us(),us()),2&t){var n=Ms();Gr(2),os("inline",!0),Gr(2),os("ngIf",0===n.allLabels.length),Gr(1),os("ngIf",0!==n.allLabels.length)}}function XI(t,e){if(1&t&&cs(0,"app-paginator",23),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",ku(4,FI))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var tY=function(t){return{"paginator-icons-fixer":t}},eY=function(){function t(t,e,n,i,r,a){var o=this;this.dialog=t,this.route=e,this.router=n,this.snackbarService=i,this.translateService=r,this.storageService=a,this.listId="ll",this.labelSortData=new VE(["label"],"labels.label",zE.Text),this.idSortData=new VE(["id"],"labels.id",zE.Text),this.typeSortData=new VE(["identifiedElementType_sort"],"labels.type",zE.Text),this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"labels.filter-dialog.label",keyNameInElementsArray:"label",type:TE.TextInput,maxlength:100},{filterName:"labels.filter-dialog.id",keyNameInElementsArray:"id",type:TE.TextInput,maxlength:66},{filterName:"labels.filter-dialog.type",keyNameInElementsArray:"identifiedElementType",type:TE.Select,printableLabelsForValues:[{value:"",label:"labels.filter-dialog.type-options.any"},{value:Gb.Node,label:"labels.filter-dialog.type-options.visor"},{value:Gb.DmsgServer,label:"labels.filter-dialog.type-options.dmsg-server"},{value:Gb.Transport,label:"labels.filter-dialog.type-options.transport"}]}],this.dataSorter=new WE(this.dialog,this.translateService,[this.labelSortData,this.idSortData,this.typeSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe((function(){o.recalculateElementsToShow()})),this.dataFilterer=new gP(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe((function(t){o.filteredLabels=t,o.dataSorter.setData(o.filteredLabels)})),this.loadData(),this.navigationsSubscription=this.route.paramMap.subscribe((function(t){if(t.has("page")){var e=Number.parseInt(t.get("page"),10);(isNaN(e)||e<1)&&(e=1),o.currentPageInUrl=e,o.recalculateElementsToShow()}}))}return Object.defineProperty(t.prototype,"showShortList",{set:function(t){this.showShortList_=t,this.dataSorter.setData(this.filteredLabels)},enumerable:!1,configurable:!0}),t.prototype.ngOnDestroy=function(){this.navigationsSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()},t.prototype.loadData=function(){var t=this;this.allLabels=this.storageService.getSavedLabels(),this.allLabels.forEach((function(e){e.identifiedElementType_sort=t.getLabelTypeIdentification(e)[0]})),this.dataFilterer.setData(this.allLabels)},t.prototype.getLabelTypeIdentification=function(t){return t.identifiedElementType===Gb.Node?["1","labels.filter-dialog.type-options.visor"]:t.identifiedElementType===Gb.DmsgServer?["2","labels.filter-dialog.type-options.dmsg-server"]:t.identifiedElementType===Gb.Transport?["3","labels.filter-dialog.type-options.transport"]:void 0},t.prototype.changeSelection=function(t){this.selections.get(t.id)?this.selections.set(t.id,!1):this.selections.set(t.id,!0)},t.prototype.hasSelectedElements=function(){if(!this.selections)return!1;var t=!1;return this.selections.forEach((function(e){e&&(t=!0)})),t},t.prototype.changeAllSelections=function(t){var e=this;this.selections.forEach((function(n,i){e.selections.set(i,t)}))},t.prototype.deleteSelected=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"labels.delete-selected-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.close(),t.selections.forEach((function(e,n){e&&t.storageService.saveLabel(n,"",null)})),t.snackbarService.showDone("labels.deleted"),t.loadData()}))},t.prototype.showOptionsDialog=function(t){var e=this;DE.openDialog(this.dialog,[{icon:"close",label:"labels.delete"}],"common.options").afterClosed().subscribe((function(n){1===n&&e.delete(t.id)}))},t.prototype.delete=function(t){var e=this,n=SE.createConfirmationDialog(this.dialog,"labels.delete-confirmation");n.componentInstance.operationAccepted.subscribe((function(){n.close(),e.storageService.saveLabel(t,"",null),e.snackbarService.showDone("labels.deleted"),e.loadData()}))},t.prototype.recalculateElementsToShow=function(){var t=this;if(this.currentPage=this.currentPageInUrl,this.filteredLabels){var e=this.showShortList_?xx.maxShortListElements:xx.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredLabels.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);var n=e*(this.currentPage-1);this.labelsToShow=this.filteredLabels.slice(n,n+e);var i=new Map;this.labelsToShow.forEach((function(e){i.set(e.id,!0),t.selections.has(e.id)||t.selections.set(e.id,!1)}));var r=[];this.selections.forEach((function(t,e){i.has(e)||r.push(e)})),r.forEach((function(e){t.selections.delete(e)}))}else this.labelsToShow=null,this.selections=new Map;this.dataSource=this.labelsToShow},t.\u0275fac=function(e){return new(e||t)(rs(jx),rs(z_),rs(ub),rs(Sx),rs(hx),rs(Kb))},t.\u0275cmp=Fe({type:t,selectors:[["app-label-list"]],inputs:{showShortList:"showShortList"},decls:23,vars:22,consts:[[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],["class","uppercase",4,"ngIf"],["class","filter-label subtle-transparent-button cursor-pointer",3,"click",4,"ngIf"],[1,"options"],[1,"options-container"],["class","small-icon",3,"inline","matTooltip","click",4,"ngIf"],[3,"inline","matMenuTriggerFor",4,"ngIf"],[3,"overlapTrigger"],["selectionMenu","matMenu"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"disabled","click"],[3,"currentPage","numberOfPages","linkParts","queryParams",4,"ngIf"],["class","rounded-elevated-box mt-3",4,"ngIf"],[1,"uppercase"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],["class","item",4,"ngFor","ngForOf"],[1,"transparent-50"],[1,"item"],[4,"ngIf"],[1,"small-icon",3,"inline","matTooltip","click"],[3,"inline","matMenuTriggerFor"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline",4,"ngIf"],[1,"actions"],[4,"ngFor","ngForOf"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"inline"],[3,"numberOfElements","linkParts","queryParams",4,"ngIf"],[1,"selection-col"],[3,"checked","change"],["mat-icon-button","",1,"action-button","transparent-button",3,"matTooltip","click"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"matTooltip","click"],[3,"numberOfElements","linkParts","queryParams"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],["class","font-sm",4,"ngIf"],[1,"font-sm"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ns(2,TI,6,7,"span",2),ns(3,AI,5,4,"div",3),us(),ls(4,"div",4),ls(5,"div",5),ns(6,II,3,4,"mat-icon",6),ns(7,YI,2,2,"mat-icon",7),ls(8,"mat-menu",8,9),ls(10,"div",10),vs("click",(function(){return e.changeAllSelections(!0)})),rl(11),Du(12,"translate"),us(),ls(13,"div",10),vs("click",(function(){return e.changeAllSelections(!1)})),rl(14),Du(15,"translate"),us(),ls(16,"div",11),vs("click",(function(){return e.deleteSelected()})),rl(17),Du(18,"translate"),us(),us(),us(),ns(19,RI,1,5,"app-paginator",12),us(),us(),ns(20,JI,37,34,"div",13),ns(21,QI,6,3,"div",13),ns(22,XI,1,5,"app-paginator",12)),2&t&&(os("ngClass",wu(20,tY,!e.showShortList_&&e.numberOfPages>1&&e.dataSource)),Gr(2),os("ngIf",e.showShortList_),Gr(1),os("ngIf",e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0),Gr(3),os("ngIf",e.allLabels&&e.allLabels.length>0),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("overlapTrigger",!1),Gr(3),ol(" ",Lu(12,14,"selection.select-all")," "),Gr(3),ol(" ",Lu(15,16,"selection.unselect-all")," "),Gr(2),Ds("disabled",!e.hasSelectedElements()),Gr(1),ol(" ",Lu(18,18,"selection.delete-all")," "),Gr(2),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("ngIf",!e.dataSource||0===e.dataSource.length),Gr(1),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource))},directives:[vh,wh,cO,rO,US,jL,bh,pO,lA,kI,lS,LI],pipes:[px],styles:[".overflow[_ngcontent-%COMP%]{display:block;overflow-x:auto}.overflow[_ngcontent-%COMP%], .overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]}),t}();function nY(t,e){1&t&&(ls(0,"span"),ls(1,"mat-icon",15),rl(2,"warning"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol(" ",Lu(4,2,"settings.updater-config.not-saved")," "))}var iY=function(){function t(t,e){this.snackbarService=t,this.dialog=e}return t.prototype.ngOnInit=function(){this.initialChannel=localStorage.getItem(hE.Channel),this.initialVersion=localStorage.getItem(hE.Version),this.initialArchiveURL=localStorage.getItem(hE.ArchiveURL),this.initialChecksumsURL=localStorage.getItem(hE.ChecksumsURL),this.initialChannel||(this.initialChannel=""),this.initialVersion||(this.initialVersion=""),this.initialArchiveURL||(this.initialArchiveURL=""),this.initialChecksumsURL||(this.initialChecksumsURL=""),this.hasCustomSettings=!!(this.initialChannel||this.initialVersion||this.initialArchiveURL||this.initialChecksumsURL),this.form=new DD({channel:new CD(this.initialChannel),version:new CD(this.initialVersion),archiveURL:new CD(this.initialArchiveURL),checksumsURL:new CD(this.initialChecksumsURL)})},t.prototype.ngOnDestroy=function(){this.subscription&&this.subscription.unsubscribe()},Object.defineProperty(t.prototype,"dataChanged",{get:function(){return this.initialChannel!==this.form.get("channel").value.trim()||this.initialVersion!==this.form.get("version").value.trim()||this.initialArchiveURL!==this.form.get("archiveURL").value.trim()||this.initialChecksumsURL!==this.form.get("checksumsURL").value.trim()},enumerable:!1,configurable:!0}),t.prototype.saveSettings=function(){var t=this,e=this.form.get("channel").value.trim(),n=this.form.get("version").value.trim(),i=this.form.get("archiveURL").value.trim(),r=this.form.get("checksumsURL").value.trim();if(e||n||i||r){var a=SE.createConfirmationDialog(this.dialog,"settings.updater-config.save-confirmation");a.componentInstance.operationAccepted.subscribe((function(){a.close(),t.initialChannel=e,t.initialVersion=n,t.initialArchiveURL=i,t.initialChecksumsURL=r,t.hasCustomSettings=!0,localStorage.setItem(hE.UseCustomSettings,"true"),localStorage.setItem(hE.Channel,e),localStorage.setItem(hE.Version,n),localStorage.setItem(hE.ArchiveURL,i),localStorage.setItem(hE.ChecksumsURL,r),t.snackbarService.showDone("settings.updater-config.saved")}))}else this.removeSettings()},t.prototype.removeSettings=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"settings.updater-config.remove-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.close(),t.initialChannel="",t.initialVersion="",t.initialArchiveURL="",t.initialChecksumsURL="",t.form.get("channel").setValue(""),t.form.get("version").setValue(""),t.form.get("archiveURL").setValue(""),t.form.get("checksumsURL").setValue(""),t.hasCustomSettings=!1,localStorage.removeItem(hE.UseCustomSettings),localStorage.removeItem(hE.Channel),localStorage.removeItem(hE.Version),localStorage.removeItem(hE.ArchiveURL),localStorage.removeItem(hE.ChecksumsURL),t.snackbarService.showDone("settings.updater-config.removed")}))},t.\u0275fac=function(e){return new(e||t)(rs(Sx),rs(jx))},t.\u0275cmp=Fe({type:t,selectors:[["app-updater-config"]],decls:28,vars:28,consts:[[1,"rounded-elevated-box"],[1,"box-internal-container","overflow"],[1,"white-form-help-icon-container"],[3,"inline","matTooltip"],[3,"formGroup"],[1,"white-form-field"],["formControlName","channel","maxlength","255","matInput","",3,"placeholder"],["formControlName","version","maxlength","255","matInput","",3,"placeholder"],["formControlName","archiveURL","maxlength","255","matInput","",3,"placeholder"],["formControlName","checksumsURL","maxlength","255","matInput","",3,"placeholder"],[1,"mt-2","buttons-area"],[1,"text-area","red-text"],[4,"ngIf"],["color","primary",1,"app-button","left-button",3,"forDarkBackground","disabled","action"],["color","primary",1,"app-button",3,"forDarkBackground","disabled","action"],[3,"inline"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ls(2,"div",2),ls(3,"mat-icon",3),Du(4,"translate"),rl(5," help "),us(),us(),ls(6,"form",4),ls(7,"mat-form-field",5),cs(8,"input",6),Du(9,"translate"),us(),ls(10,"mat-form-field",5),cs(11,"input",7),Du(12,"translate"),us(),ls(13,"mat-form-field",5),cs(14,"input",8),Du(15,"translate"),us(),ls(16,"mat-form-field",5),cs(17,"input",9),Du(18,"translate"),us(),ls(19,"div",10),ls(20,"div",11),ns(21,nY,5,4,"span",12),us(),ls(22,"app-button",13),vs("action",(function(){return e.removeSettings()})),rl(23),Du(24,"translate"),us(),ls(25,"app-button",14),vs("action",(function(){return e.saveSettings()})),rl(26),Du(27,"translate"),us(),us(),us(),us(),us()),2&t&&(Gr(3),os("inline",!0)("matTooltip",Lu(4,14,"settings.updater-config.help")),Gr(3),os("formGroup",e.form),Gr(2),os("placeholder",Lu(9,16,"settings.updater-config.channel")),Gr(3),os("placeholder",Lu(12,18,"settings.updater-config.version")),Gr(3),os("placeholder",Lu(15,20,"settings.updater-config.archive-url")),Gr(3),os("placeholder",Lu(18,22,"settings.updater-config.checksum-url")),Gr(4),os("ngIf",e.dataChanged),Gr(1),os("forDarkBackground",!0)("disabled",!e.hasCustomSettings),Gr(1),ol(" ",Lu(24,24,"settings.updater-config.remove-settings")," "),Gr(2),os("forDarkBackground",!0)("disabled",!e.dataChanged),Gr(1),ol(" ",Lu(27,26,"settings.updater-config.save")," "))},directives:[US,jL,jD,PC,UD,xT,MC,NT,EC,QD,uL,wh,AL],pipes:[px],styles:["mat-form-field[_ngcontent-%COMP%]{margin-right:32px}.buttons-area[_ngcontent-%COMP%]{display:flex}@media (max-width:767px){.buttons-area[_ngcontent-%COMP%]{flex-direction:column;align-items:flex-end}}.buttons-area[_ngcontent-%COMP%] .text-area[_ngcontent-%COMP%]{margin-right:auto;flex-grow:1}@media (max-width:767px){.buttons-area[_ngcontent-%COMP%] .text-area[_ngcontent-%COMP%]{margin-right:32px!important}}.buttons-area[_ngcontent-%COMP%] .text-area[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:1px}.buttons-area[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{float:right;margin-right:32px;flex-grow:0}@media (max-width:767px){.buttons-area[_ngcontent-%COMP%] app-button[_ngcontent-%COMP%]{margin-top:10px}}.buttons-area[_ngcontent-%COMP%] .left-button[_ngcontent-%COMP%]{margin-right:5px!important}@media (max-width:767px){.buttons-area[_ngcontent-%COMP%] .left-button[_ngcontent-%COMP%]{margin-right:32px!important}}"]}),t}();function rY(t,e){if(1&t){var n=ps();ls(0,"div",8),vs("click",(function(){return Cn(n),Ms().showUpdaterSettings()})),ls(1,"span",9),rl(2),Du(3,"translate"),us(),us()}2&t&&(Gr(2),al(Lu(3,1,"settings.updater-config.open-link")))}function aY(t,e){1&t&&cs(0,"app-updater-config",10)}var oY=function(){return["start.title"]},sY=function(){function t(t,e,n,i){this.authService=t,this.router=e,this.snackbarService=n,this.dialog=i,this.tabsData=[],this.options=[],this.mustShowUpdaterSettings=!!localStorage.getItem(hE.UseCustomSettings),this.tabsData=[{icon:"view_headline",label:"nodes.title",linkParts:["/nodes"]},{icon:"language",label:"nodes.dmsg-title",linkParts:["/nodes","dmsg"]},{icon:"settings",label:"settings.title",linkParts:["/settings"]}],this.options=[{name:"common.logout",actionName:"logout",icon:"power_settings_new"}]}return t.prototype.performAction=function(t){"logout"===t&&this.logout()},t.prototype.logout=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"common.logout-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.componentInstance.closeModal(),t.authService.logout().subscribe((function(){return t.router.navigate(["login"])}),(function(){return t.snackbarService.showError("common.logout-error")}))}))},t.prototype.showUpdaterSettings=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"settings.updater-config.open-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.close(),t.mustShowUpdaterSettings=!0}))},t.\u0275fac=function(e){return new(e||t)(rs(rC),rs(ub),rs(Sx),rs(jx))},t.\u0275cmp=Fe({type:t,selectors:[["app-settings"]],decls:9,vars:9,consts:[[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","selectedTabIndex","showUpdateButton","optionsData","optionSelected"],[1,"content","col-12","mt-4.5"],[1,"d-block","mb-4"],[3,"showShortList"],["class","d-block mt-4",3,"click",4,"ngIf"],["class","d-block mt-4",4,"ngIf"],[1,"d-block","mt-4",3,"click"],[1,"show-link"],[1,"d-block","mt-4"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ls(2,"app-top-bar",2),vs("optionSelected",(function(t){return e.performAction(t)})),us(),us(),ls(3,"div",3),cs(4,"app-refresh-rate",4),cs(5,"app-password"),cs(6,"app-label-list",5),ns(7,rY,4,3,"div",6),ns(8,aY,1,0,"app-updater-config",7),us(),us()),2&t&&(Gr(2),os("titleParts",ku(8,oY))("tabsData",e.tabsData)("selectedTabIndex",2)("showUpdateButton",!1)("optionsData",e.options),Gr(4),os("showShortList",!0),Gr(1),os("ngIf",!e.mustShowUpdaterSettings),Gr(1),os("ngIf",e.mustShowUpdaterSettings))},directives:[qO,dI,qT,eY,wh,iY],pipes:[px],styles:[".show-link[_ngcontent-%COMP%]{cursor:pointer;font-size:.8rem}"]}),t}(),lY=["button"],uY=["firstInput"];function cY(t,e){1&t&&cs(0,"app-loading-indicator",3),2&t&&os("showWhite",!1)}function dY(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),ol(" ",Lu(2,1,"transports.dialog.errors.remote-key-length-error")," "))}function hY(t,e){1&t&&(rl(0),Du(1,"translate")),2&t&&ol(" ",Lu(1,1,"transports.dialog.errors.remote-key-chars-error")," ")}function fY(t,e){if(1&t&&(ls(0,"mat-option",14),rl(1),us()),2&t){var n=e.$implicit;os("value",n),Gr(1),al(n)}}function pY(t,e){if(1&t){var n=ps();ls(0,"form",4),ls(1,"mat-form-field"),cs(2,"input",5,6),Du(4,"translate"),ls(5,"mat-error"),ns(6,dY,3,3,"ng-container",7),us(),ns(7,hY,2,3,"ng-template",null,8,tc),us(),ls(9,"mat-form-field"),cs(10,"input",9),Du(11,"translate"),us(),ls(12,"mat-form-field"),ls(13,"mat-select",10),Du(14,"translate"),ns(15,fY,2,2,"mat-option",11),us(),ls(16,"mat-error"),rl(17),Du(18,"translate"),us(),us(),ls(19,"app-button",12,13),vs("action",(function(){return Cn(n),Ms().create()})),rl(21),Du(22,"translate"),us(),us()}if(2&t){var i=is(8),r=Ms();os("formGroup",r.form),Gr(2),os("placeholder",Lu(4,10,"transports.dialog.remote-key")),Gr(4),os("ngIf",!r.form.get("remoteKey").hasError("pattern"))("ngIfElse",i),Gr(4),os("placeholder",Lu(11,12,"transports.dialog.label")),Gr(3),os("placeholder",Lu(14,14,"transports.dialog.transport-type")),Gr(2),os("ngForOf",r.types),Gr(2),ol(" ",Lu(18,16,"transports.dialog.errors.transport-type-error")," "),Gr(2),os("disabled",!r.form.valid),Gr(2),ol(" ",Lu(22,18,"transports.create")," ")}}var mY=function(){function t(t,e,n,i,r){this.transportService=t,this.formBuilder=e,this.dialogRef=n,this.snackbarService=i,this.storageService=r,this.shouldShowError=!0}return t.openDialog=function(e){var n=new Tx;return n.autoFocus=!1,n.width=xx.mediumModalWidth,e.open(t,n)},t.prototype.ngOnInit=function(){this.form=this.formBuilder.group({remoteKey:["",RC.compose([RC.required,RC.minLength(66),RC.maxLength(66),RC.pattern("^[0-9a-fA-F]+$")])],label:[""],type:["",RC.required]}),this.loadData(0)},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe(),this.operationSubscription&&this.operationSubscription.unsubscribe()},t.prototype.create=function(){this.form.valid&&!this.button.disabled&&(this.button.showLoading(),this.operationSubscription=this.transportService.create(uI.getCurrentNodeKey(),this.form.get("remoteKey").value,this.form.get("type").value).subscribe({next:this.onSuccess.bind(this),error:this.onError.bind(this)}))},t.prototype.onSuccess=function(t){var e=this.form.get("label").value,n=!1;e&&(t&&t.id?this.storageService.saveLabel(t.id,e,Gb.Transport):n=!0),uI.refreshCurrentDisplayedData(),this.dialogRef.close(),n?this.snackbarService.showWarning("transports.dialog.success-without-label"):this.snackbarService.showDone("transports.dialog.success")},t.prototype.onError=function(t){this.button.showError(),t=Mx(t),this.snackbarService.showError(t)},t.prototype.loadData=function(t){var e=this;this.dataSubscription&&this.dataSubscription.unsubscribe(),this.dataSubscription=pg(1).pipe(tE(t),st((function(){return e.transportService.types(uI.getCurrentNodeKey())}))).subscribe((function(t){t.sort((function(t,e){return t.localeCompare(e)}));var n=t.findIndex((function(t){return"dmsg"===t.toLowerCase()}));n=-1!==n?n:0,e.types=t,e.form.get("type").setValue(t[n]),e.snackbarService.closeCurrentIfTemporaryError(),setTimeout((function(){return e.firstInput.nativeElement.focus()}))}),(function(t){t=Mx(t),e.shouldShowError&&(e.snackbarService.showError("common.loading-error",null,!0,t),e.shouldShowError=!1),e.loadData(xx.connectionRetryDelay)}))},t.\u0275fac=function(e){return new(e||t)(rs(lE),rs(pL),rs(Ix),rs(Sx),rs(Kb))},t.\u0275cmp=Fe({type:t,selectors:[["app-create-transport"]],viewQuery:function(t,e){var n;1&t&&(Uu(lY,!0),Uu(uY,!0)),2&t&&(zu(n=Zu())&&(e.button=n.first),zu(n=Zu())&&(e.firstInput=n.first))},decls:4,vars:5,consts:[[3,"headline"],[3,"showWhite",4,"ngIf"],[3,"formGroup",4,"ngIf"],[3,"showWhite"],[3,"formGroup"],["formControlName","remoteKey","maxlength","66","matInput","",3,"placeholder"],["firstInput",""],[4,"ngIf","ngIfElse"],["hexError",""],["formControlName","label","maxlength","66","matInput","",3,"placeholder"],["formControlName","type",3,"placeholder"],[3,"value",4,"ngFor","ngForOf"],["color","primary",1,"float-right",3,"disabled","action"],["button",""],[3,"value"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ns(2,cY,1,1,"app-loading-indicator",1),ns(3,pY,23,20,"form",2),us()),2&t&&(os("headline",Lu(1,3,"transports.create")),Gr(2),os("ngIf",!e.types),Gr(1),os("ngIf",e.types))},directives:[xL,wh,gC,jD,PC,UD,xT,MC,NT,EC,QD,uL,lT,uP,bh,AL,QM],pipes:[px],styles:[""]}),t}(),gY=function(){function t(){}return t.prototype.transform=function(t,e){for(var n=["B","KB","MB","GB","TB","PB","EB","ZB","YB"],i=new rE.BigNumber(t),r=n[0],a=0;i.dividedBy(1024).isGreaterThan(1);)i=i.dividedBy(1024),r=n[a+=1];var o="";return e&&!e.showValue||(o=i.toFixed(2)),(!e||e.showValue&&e.showUnit)&&(o+=" "),e&&!e.showUnit||(o+=r),o},t.\u0275fac=function(e){return new(e||t)},t.\u0275pipe=ze({name:"autoScale",type:t,pure:!0}),t}(),vY=function(){function t(t){this.data=t}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.largeModalWidth,e.open(t,i)},t.\u0275fac=function(e){return new(e||t)(rs(Fx))},t.\u0275cmp=Fe({type:t,selectors:[["app-transport-details"]],decls:52,vars:47,consts:[[1,"info-dialog",3,"headline"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[1,"title"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"div"),ls(3,"div",1),ls(4,"mat-icon",2),rl(5,"list"),us(),rl(6),Du(7,"translate"),us(),ls(8,"div",3),ls(9,"span"),rl(10),Du(11,"translate"),us(),ls(12,"div"),rl(13),Du(14,"translate"),us(),us(),ls(15,"div",3),ls(16,"span"),rl(17),Du(18,"translate"),us(),rl(19),us(),ls(20,"div",3),ls(21,"span"),rl(22),Du(23,"translate"),us(),rl(24),us(),ls(25,"div",3),ls(26,"span"),rl(27),Du(28,"translate"),us(),rl(29),us(),ls(30,"div",3),ls(31,"span"),rl(32),Du(33,"translate"),us(),rl(34),us(),ls(35,"div",4),ls(36,"mat-icon",2),rl(37,"import_export"),us(),rl(38),Du(39,"translate"),us(),ls(40,"div",3),ls(41,"span"),rl(42),Du(43,"translate"),us(),rl(44),Du(45,"autoScale"),us(),ls(46,"div",3),ls(47,"span"),rl(48),Du(49,"translate"),us(),rl(50),Du(51,"autoScale"),us(),us(),us()),2&t&&(os("headline",Lu(1,21,"transports.details.title")),Gr(4),os("inline",!0),Gr(2),ol("",Lu(7,23,"transports.details.basic.title")," "),Gr(4),al(Lu(11,25,"transports.details.basic.state")),Gr(2),Us("d-inline "+(e.data.isUp?"green-text":"red-text")),Gr(1),ol(" ",Lu(14,27,"transports.statuses."+(e.data.isUp?"online":"offline"))," "),Gr(4),al(Lu(18,29,"transports.details.basic.id")),Gr(2),ol(" ",e.data.id," "),Gr(3),al(Lu(23,31,"transports.details.basic.local-pk")),Gr(2),ol(" ",e.data.localPk," "),Gr(3),al(Lu(28,33,"transports.details.basic.remote-pk")),Gr(2),ol(" ",e.data.remotePk," "),Gr(3),al(Lu(33,35,"transports.details.basic.type")),Gr(2),ol(" ",e.data.type," "),Gr(2),os("inline",!0),Gr(2),ol("",Lu(39,37,"transports.details.data.title")," "),Gr(4),al(Lu(43,39,"transports.details.data.uploaded")),Gr(2),ol(" ",Lu(45,41,e.data.sent)," "),Gr(4),al(Lu(49,43,"transports.details.data.downloaded")),Gr(2),ol(" ",Lu(51,45,e.data.recv)," "))},directives:[xL,US],pipes:[px,gY],styles:[""]}),t}();function _Y(t,e){1&t&&(ls(0,"span",15),rl(1),Du(2,"translate"),ls(3,"mat-icon",16),Du(4,"translate"),rl(5,"help"),us(),us()),2&t&&(Gr(1),ol(" ",Lu(2,3,"transports.title")," "),Gr(2),os("inline",!0)("matTooltip",Lu(4,5,"transports.info")))}function yY(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms().$implicit;Gr(1),al(Lu(2,1,n.translatableValue))}}function bY(t,e){if(1&t&&(ds(0),rl(1),hs()),2&t){var n=Ms().$implicit;Gr(1),al(n.value)}}function kY(t,e){if(1&t&&(ls(0,"div",20),ls(1,"span"),rl(2),Du(3,"translate"),us(),ns(4,yY,3,3,"ng-container",21),ns(5,bY,2,1,"ng-container",21),us()),2&t){var n=e.$implicit;Gr(2),ol("",Lu(3,3,n.filterName),": "),Gr(2),os("ngIf",n.translatableValue),Gr(1),os("ngIf",n.value)}}function wY(t,e){if(1&t){var n=ps();ls(0,"div",17),vs("click",(function(){return Cn(n),Ms().dataFilterer.removeFilters()})),ns(1,kY,6,5,"div",18),ls(2,"div",19),rl(3),Du(4,"translate"),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngForOf",i.dataFilterer.currentFiltersTexts),Gr(2),al(Lu(4,2,"filters.press-to-remove"))}}function MY(t,e){if(1&t){var n=ps();ls(0,"mat-icon",22),vs("click",(function(){return Cn(n),Ms().dataFilterer.changeFilters()})),rl(1,"filter_list"),us()}2&t&&os("inline",!0)}function SY(t,e){if(1&t&&(ls(0,"mat-icon",23),rl(1,"more_horiz"),us()),2&t){Ms();var n=is(11);os("inline",!0)("matMenuTriggerFor",n)}}var xY=function(t){return["/nodes",t,"transports"]};function CY(t,e){if(1&t&&cs(0,"app-paginator",24),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",wu(4,xY,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}function DY(t,e){if(1&t&&(ls(0,"mat-icon",39),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function LY(t,e){1&t&&(ds(0),rl(1,"*"),hs())}function TY(t,e){if(1&t&&(ds(0),ls(1,"mat-icon",39),rl(2),us(),ns(3,LY,2,0,"ng-container",21),hs()),2&t){var n=Ms(2);Gr(1),os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow),Gr(1),os("ngIf",n.dataSorter.currentlySortingByLabel)}}function EY(t,e){1&t&&(ds(0),rl(1,"*"),hs())}function PY(t,e){if(1&t&&(ds(0),ls(1,"mat-icon",39),rl(2),us(),ns(3,EY,2,0,"ng-container",21),hs()),2&t){var n=Ms(2);Gr(1),os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow),Gr(1),os("ngIf",n.dataSorter.currentlySortingByLabel)}}function OY(t,e){if(1&t&&(ls(0,"mat-icon",39),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function AY(t,e){if(1&t&&(ls(0,"mat-icon",39),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function IY(t,e){if(1&t&&(ls(0,"mat-icon",39),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function YY(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td",41),ls(2,"mat-checkbox",42),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(3,"td"),cs(4,"span",43),Du(5,"translate"),us(),ls(6,"td"),ls(7,"app-labeled-element-text",44),vs("labelEdited",(function(){return Cn(n),Ms(2).refreshData()})),us(),us(),ls(8,"td"),ls(9,"app-labeled-element-text",45),vs("labelEdited",(function(){return Cn(n),Ms(2).refreshData()})),us(),us(),ls(10,"td"),rl(11),us(),ls(12,"td"),rl(13),Du(14,"autoScale"),us(),ls(15,"td"),rl(16),Du(17,"autoScale"),us(),ls(18,"td",32),ls(19,"button",46),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).details(t)})),Du(20,"translate"),ls(21,"mat-icon",39),rl(22,"visibility"),us(),us(),ls(23,"button",46),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).delete(t.id)})),Du(24,"translate"),ls(25,"mat-icon",39),rl(26,"close"),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(2),os("checked",r.selections.get(i.id)),Gr(2),Us(r.transportStatusClass(i,!0)),os("matTooltip",Lu(5,16,r.transportStatusText(i,!0))),Gr(3),Ds("id",i.id),os("short",!0)("elementType",r.labeledElementTypes.Transport),Gr(2),Ds("id",i.remotePk),os("short",!0),Gr(2),ol(" ",i.type," "),Gr(2),ol(" ",Lu(14,18,i.sent)," "),Gr(3),ol(" ",Lu(17,20,i.recv)," "),Gr(3),os("matTooltip",Lu(20,22,"transports.details.title")),Gr(2),os("inline",!0),Gr(2),os("matTooltip",Lu(24,24,"transports.delete")),Gr(2),os("inline",!0)}}function FY(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.label")))}function RY(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.inverted-order")))}function NY(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td"),ls(2,"div",36),ls(3,"div",47),ls(4,"mat-checkbox",42),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(5,"div",37),ls(6,"div",48),ls(7,"span",1),rl(8),Du(9,"translate"),us(),rl(10,": "),ls(11,"span"),rl(12),Du(13,"translate"),us(),us(),ls(14,"div",49),ls(15,"span",1),rl(16),Du(17,"translate"),us(),rl(18,": "),ls(19,"app-labeled-element-text",50),vs("labelEdited",(function(){return Cn(n),Ms(2).refreshData()})),us(),us(),ls(20,"div",49),ls(21,"span",1),rl(22),Du(23,"translate"),us(),rl(24,": "),ls(25,"app-labeled-element-text",51),vs("labelEdited",(function(){return Cn(n),Ms(2).refreshData()})),us(),us(),ls(26,"div",48),ls(27,"span",1),rl(28),Du(29,"translate"),us(),rl(30),us(),ls(31,"div",48),ls(32,"span",1),rl(33),Du(34,"translate"),us(),rl(35),Du(36,"autoScale"),us(),ls(37,"div",48),ls(38,"span",1),rl(39),Du(40,"translate"),us(),rl(41),Du(42,"autoScale"),us(),us(),cs(43,"div",52),ls(44,"div",38),ls(45,"button",53),vs("click",(function(t){Cn(n);var i=e.$implicit,r=Ms(2);return t.stopPropagation(),r.showOptionsDialog(i)})),Du(46,"translate"),ls(47,"mat-icon"),rl(48),us(),us(),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(4),os("checked",r.selections.get(i.id)),Gr(4),al(Lu(9,18,"transports.state")),Gr(3),Us(r.transportStatusClass(i,!1)+" title"),Gr(1),al(Lu(13,20,r.transportStatusText(i,!1))),Gr(4),al(Lu(17,22,"transports.id")),Gr(3),Ds("id",i.id),os("elementType",r.labeledElementTypes.Transport),Gr(3),al(Lu(23,24,"transports.remote-node")),Gr(3),Ds("id",i.remotePk),Gr(3),al(Lu(29,26,"transports.type")),Gr(2),ol(": ",i.type," "),Gr(3),al(Lu(34,28,"common.uploaded")),Gr(2),ol(": ",Lu(36,30,i.sent)," "),Gr(4),al(Lu(40,32,"common.downloaded")),Gr(2),ol(": ",Lu(42,34,i.recv)," "),Gr(4),os("matTooltip",Lu(46,36,"common.options")),Gr(3),al("add")}}function HY(t,e){if(1&t&&cs(0,"app-view-all-link",54),2&t){var n=Ms(2);os("numberOfElements",n.filteredTransports.length)("linkParts",wu(3,xY,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var jY=function(t,e){return{"small-node-list-margins":t,"full-node-list-margins":e}},BY=function(t){return{"d-lg-none d-xl-table":t}},VY=function(t){return{"d-lg-table d-xl-none":t}};function zY(t,e){if(1&t){var n=ps();ls(0,"div",25),ls(1,"div",26),ls(2,"table",27),ls(3,"tr"),cs(4,"th"),ls(5,"th",28),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.stateSortData)})),Du(6,"translate"),cs(7,"span",29),ns(8,DY,2,2,"mat-icon",30),us(),ls(9,"th",31),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.idSortData)})),rl(10),Du(11,"translate"),ns(12,TY,4,3,"ng-container",21),us(),ls(13,"th",31),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.remotePkSortData)})),rl(14),Du(15,"translate"),ns(16,PY,4,3,"ng-container",21),us(),ls(17,"th",31),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.typeSortData)})),rl(18),Du(19,"translate"),ns(20,OY,2,2,"mat-icon",30),us(),ls(21,"th",31),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.uploadedSortData)})),rl(22),Du(23,"translate"),ns(24,AY,2,2,"mat-icon",30),us(),ls(25,"th",31),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.downloadedSortData)})),rl(26),Du(27,"translate"),ns(28,IY,2,2,"mat-icon",30),us(),cs(29,"th",32),us(),ns(30,YY,27,26,"tr",33),us(),ls(31,"table",34),ls(32,"tr",35),vs("click",(function(){return Cn(n),Ms().dataSorter.openSortingOrderModal()})),ls(33,"td"),ls(34,"div",36),ls(35,"div",37),ls(36,"div",1),rl(37),Du(38,"translate"),us(),ls(39,"div"),rl(40),Du(41,"translate"),ns(42,FY,3,3,"ng-container",21),ns(43,RY,3,3,"ng-container",21),us(),us(),ls(44,"div",38),ls(45,"mat-icon",39),rl(46,"keyboard_arrow_down"),us(),us(),us(),us(),us(),ns(47,NY,49,38,"tr",33),us(),ns(48,HY,1,5,"app-view-all-link",40),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngClass",Mu(39,jY,i.showShortList_,!i.showShortList_)),Gr(1),os("ngClass",wu(42,BY,i.showShortList_)),Gr(3),os("matTooltip",Lu(6,23,"transports.state-tooltip")),Gr(3),os("ngIf",i.dataSorter.currentSortingColumn===i.stateSortData),Gr(2),ol(" ",Lu(11,25,"transports.id")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.idSortData),Gr(2),ol(" ",Lu(15,27,"transports.remote-node")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.remotePkSortData),Gr(2),ol(" ",Lu(19,29,"transports.type")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.typeSortData),Gr(2),ol(" ",Lu(23,31,"common.uploaded")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.uploadedSortData),Gr(2),ol(" ",Lu(27,33,"common.downloaded")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.downloadedSortData),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngClass",wu(44,VY,i.showShortList_)),Gr(6),al(Lu(38,35,"tables.sorting-title")),Gr(3),ol("",Lu(41,37,i.dataSorter.currentSortingColumn.label)," "),Gr(2),os("ngIf",i.dataSorter.currentlySortingByLabel),Gr(1),os("ngIf",i.dataSorter.sortingInReverseOrder),Gr(2),os("inline",!0),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngIf",i.showShortList_&&i.numberOfPages>1)}}function WY(t,e){1&t&&(ls(0,"span",58),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"transports.empty")))}function UY(t,e){1&t&&(ls(0,"span",58),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"transports.empty-with-filter")))}function qY(t,e){if(1&t&&(ls(0,"div",25),ls(1,"div",55),ls(2,"mat-icon",56),rl(3,"warning"),us(),ns(4,WY,3,3,"span",57),ns(5,UY,3,3,"span",57),us(),us()),2&t){var n=Ms();Gr(2),os("inline",!0),Gr(2),os("ngIf",0===n.allTransports.length),Gr(1),os("ngIf",0!==n.allTransports.length)}}function GY(t,e){if(1&t&&cs(0,"app-paginator",24),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",wu(4,xY,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var KY=function(t){return{"paginator-icons-fixer":t}},JY=function(){function t(t,e,n,i,r,a,o){var s=this;this.dialog=t,this.transportService=e,this.route=n,this.router=i,this.snackbarService=r,this.translateService=a,this.storageService=o,this.listId="tr",this.stateSortData=new VE(["isUp"],"transports.state",zE.Boolean),this.idSortData=new VE(["id"],"transports.id",zE.Text,["id_label"]),this.remotePkSortData=new VE(["remotePk"],"transports.remote-node",zE.Text,["remote_pk_label"]),this.typeSortData=new VE(["type"],"transports.type",zE.Text),this.uploadedSortData=new VE(["sent"],"common.uploaded",zE.NumberReversed),this.downloadedSortData=new VE(["recv"],"common.downloaded",zE.NumberReversed),this.selections=new Map,this.hasOfflineTransports=!1,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"transports.filter-dialog.online",keyNameInElementsArray:"isUp",type:TE.Select,printableLabelsForValues:[{value:"",label:"transports.filter-dialog.online-options.any"},{value:"true",label:"transports.filter-dialog.online-options.online"},{value:"false",label:"transports.filter-dialog.online-options.offline"}]},{filterName:"transports.filter-dialog.id",keyNameInElementsArray:"id",secondaryKeyNameInElementsArray:"id_label",type:TE.TextInput,maxlength:36},{filterName:"transports.filter-dialog.remote-node",keyNameInElementsArray:"remotePk",secondaryKeyNameInElementsArray:"remote_pk_label",type:TE.TextInput,maxlength:66}],this.labeledElementTypes=Gb,this.operationSubscriptionsGroup=[],this.dataSorter=new WE(this.dialog,this.translateService,[this.stateSortData,this.idSortData,this.remotePkSortData,this.typeSortData,this.uploadedSortData,this.downloadedSortData],1,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe((function(){s.recalculateElementsToShow()})),this.dataFilterer=new gP(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe((function(t){s.filteredTransports=t,s.hasOfflineTransports=!1,s.filteredTransports.forEach((function(t){t.isUp||(s.hasOfflineTransports=!0)})),s.dataSorter.setData(s.filteredTransports)})),this.navigationsSubscription=this.route.paramMap.subscribe((function(t){if(t.has("page")){var e=Number.parseInt(t.get("page"),10);(isNaN(e)||e<1)&&(e=1),s.currentPageInUrl=e,s.recalculateElementsToShow()}})),this.languageSubscription=this.translateService.onLangChange.subscribe((function(){s.transports=s.allTransports}))}return Object.defineProperty(t.prototype,"showShortList",{set:function(t){this.showShortList_=t,this.dataSorter.setData(this.filteredTransports)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"transports",{set:function(t){var e=this;this.allTransports=t,this.allTransports.forEach((function(t){t.id_label=BE.getCompleteLabel(e.storageService,e.translateService,t.id),t.remote_pk_label=BE.getCompleteLabel(e.storageService,e.translateService,t.remotePk)})),this.dataFilterer.setData(this.allTransports)},enumerable:!1,configurable:!0}),t.prototype.ngOnDestroy=function(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach((function(t){return t.unsubscribe()})),this.languageSubscription.unsubscribe(),this.dataSortedSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFiltererSubscription.unsubscribe(),this.dataFilterer.dispose()},t.prototype.transportStatusClass=function(t,e){switch(t.isUp){case!0:return e?"dot-green":"green-text";default:return e?"dot-red":"red-text"}},t.prototype.transportStatusText=function(t,e){switch(t.isUp){case!0:return"transports.statuses.online"+(e?"-tooltip":"");default:return"transports.statuses.offline"+(e?"-tooltip":"")}},t.prototype.changeSelection=function(t){this.selections.get(t.id)?this.selections.set(t.id,!1):this.selections.set(t.id,!0)},t.prototype.hasSelectedElements=function(){if(!this.selections)return!1;var t=!1;return this.selections.forEach((function(e){e&&(t=!0)})),t},t.prototype.changeAllSelections=function(t){var e=this;this.selections.forEach((function(n,i){e.selections.set(i,t)}))},t.prototype.deleteSelected=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"transports.delete-selected-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.componentInstance.showProcessing();var n=[];t.selections.forEach((function(t,e){t&&n.push(e)})),t.deleteRecursively(n,e)}))},t.prototype.removeOffline=function(){var t=this,e="transports.remove-all-offline-confirmation";this.dataFilterer.currentFiltersTexts&&this.dataFilterer.currentFiltersTexts.length>0&&(e="transports.remove-all-filtered-offline-confirmation");var n=SE.createConfirmationDialog(this.dialog,e);n.componentInstance.operationAccepted.subscribe((function(){var e=[];t.filteredTransports.forEach((function(t){t.isUp||e.push(t.id)})),e.length>0?(n.componentInstance.showProcessing(),t.deleteRecursively(e,n)):n.close()}))},t.prototype.create=function(){mY.openDialog(this.dialog)},t.prototype.showOptionsDialog=function(t){var e=this;DE.openDialog(this.dialog,[{icon:"visibility",label:"transports.details.title"},{icon:"close",label:"transports.delete"}],"common.options").afterClosed().subscribe((function(n){1===n?e.details(t):2===n&&e.delete(t.id)}))},t.prototype.details=function(t){vY.openDialog(this.dialog,t)},t.prototype.delete=function(t){var e=this,n=SE.createConfirmationDialog(this.dialog,"transports.delete-confirmation");n.componentInstance.operationAccepted.subscribe((function(){n.componentInstance.showProcessing(),e.operationSubscriptionsGroup.push(e.startDeleting(t).subscribe((function(){n.close(),uI.refreshCurrentDisplayedData(),e.snackbarService.showDone("transports.deleted")}),(function(t){t=Mx(t),n.componentInstance.showDone("confirmation.error-header-text",t.translatableErrorMsg)})))}))},t.prototype.refreshData=function(){uI.refreshCurrentDisplayedData()},t.prototype.recalculateElementsToShow=function(){var t=this;if(this.currentPage=this.currentPageInUrl,this.filteredTransports){var e=this.showShortList_?xx.maxShortListElements:xx.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredTransports.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);var n=e*(this.currentPage-1);this.transportsToShow=this.filteredTransports.slice(n,n+e);var i=new Map;this.transportsToShow.forEach((function(e){i.set(e.id,!0),t.selections.has(e.id)||t.selections.set(e.id,!1)}));var r=[];this.selections.forEach((function(t,e){i.has(e)||r.push(e)})),r.forEach((function(e){t.selections.delete(e)}))}else this.transportsToShow=null,this.selections=new Map;this.dataSource=this.transportsToShow},t.prototype.startDeleting=function(t){return this.transportService.delete(uI.getCurrentNodeKey(),t)},t.prototype.deleteRecursively=function(t,e){var n=this;this.operationSubscriptionsGroup.push(this.startDeleting(t[t.length-1]).subscribe((function(){t.pop(),0===t.length?(e.close(),uI.refreshCurrentDisplayedData(),n.snackbarService.showDone("transports.deleted")):n.deleteRecursively(t,e)}),(function(t){uI.refreshCurrentDisplayedData(),t=Mx(t),e.componentInstance.showDone("confirmation.error-header-text",t.translatableErrorMsg)})))},t.\u0275fac=function(e){return new(e||t)(rs(jx),rs(lE),rs(z_),rs(ub),rs(Sx),rs(hx),rs(Kb))},t.\u0275cmp=Fe({type:t,selectors:[["app-transport-list"]],inputs:{nodePK:"nodePK",showShortList:"showShortList",transports:"transports"},decls:28,vars:27,consts:[[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],["class","uppercase",4,"ngIf"],["class","filter-label subtle-transparent-button cursor-pointer",3,"click",4,"ngIf"],[1,"options"],[1,"options-container"],[3,"inline","click"],["class","small-icon",3,"inline","click",4,"ngIf"],[3,"inline","matMenuTriggerFor",4,"ngIf"],[3,"overlapTrigger"],["selectionMenu","matMenu"],["mat-menu-item","",3,"disabled","click"],["mat-menu-item","",3,"click"],[3,"currentPage","numberOfPages","linkParts","queryParams",4,"ngIf"],["class","rounded-elevated-box mt-3",4,"ngIf"],[1,"uppercase"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],["class","item",4,"ngFor","ngForOf"],[1,"transparent-50"],[1,"item"],[4,"ngIf"],[1,"small-icon",3,"inline","click"],[3,"inline","matMenuTriggerFor"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"matTooltip","click"],[1,"dot-outline-white"],[3,"inline",4,"ngIf"],[1,"sortable-column",3,"click"],[1,"actions"],[4,"ngFor","ngForOf"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"inline"],[3,"numberOfElements","linkParts","queryParams",4,"ngIf"],[1,"selection-col"],[3,"checked","change"],[3,"matTooltip"],["shortTextLength","4",3,"short","id","elementType","labelEdited"],["shortTextLength","4",3,"short","id","labelEdited"],["mat-icon-button","",1,"action-button","transparent-button",3,"matTooltip","click"],[1,"check-part"],[1,"list-row"],[1,"list-row","long-content"],[3,"id","elementType","labelEdited"],[3,"id","labelEdited"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"matTooltip","click"],[3,"numberOfElements","linkParts","queryParams"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],["class","font-sm",4,"ngIf"],[1,"font-sm"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ns(2,_Y,6,7,"span",2),ns(3,wY,5,4,"div",3),us(),ls(4,"div",4),ls(5,"div",5),ls(6,"mat-icon",6),vs("click",(function(){return e.create()})),rl(7,"add"),us(),ns(8,MY,2,1,"mat-icon",7),ns(9,SY,2,2,"mat-icon",8),ls(10,"mat-menu",9,10),ls(12,"div",11),vs("click",(function(){return e.removeOffline()})),rl(13),Du(14,"translate"),us(),ls(15,"div",12),vs("click",(function(){return e.changeAllSelections(!0)})),rl(16),Du(17,"translate"),us(),ls(18,"div",12),vs("click",(function(){return e.changeAllSelections(!1)})),rl(19),Du(20,"translate"),us(),ls(21,"div",11),vs("click",(function(){return e.deleteSelected()})),rl(22),Du(23,"translate"),us(),us(),us(),ns(24,CY,1,6,"app-paginator",13),us(),us(),ns(25,zY,49,46,"div",14),ns(26,qY,6,3,"div",14),ns(27,GY,1,6,"app-paginator",13)),2&t&&(os("ngClass",wu(25,KY,!e.showShortList_&&e.numberOfPages>1&&e.dataSource)),Gr(2),os("ngIf",e.showShortList_),Gr(1),os("ngIf",e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0),Gr(3),os("inline",!0),Gr(2),os("ngIf",e.allTransports&&e.allTransports.length>0),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("overlapTrigger",!1),Gr(2),Ds("disabled",!e.hasOfflineTransports),Gr(1),ol(" ",Lu(14,17,"transports.remove-all-offline")," "),Gr(3),ol(" ",Lu(17,19,"selection.select-all")," "),Gr(3),ol(" ",Lu(20,21,"selection.unselect-all")," "),Gr(2),Ds("disabled",!e.hasSelectedElements()),Gr(1),ol(" ",Lu(23,23,"selection.delete-all")," "),Gr(2),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("ngIf",!e.dataSource||0===e.dataSource.length),Gr(1),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource))},directives:[vh,wh,US,cO,rO,jL,bh,pO,lA,kI,BE,lS,LI],pipes:[px,gY],styles:[".overflow[_ngcontent-%COMP%]{display:block;overflow-x:auto}.overflow[_ngcontent-%COMP%], .overflow[_ngcontent-%COMP%] table[_ngcontent-%COMP%]{width:100%}.actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]}),t}();function ZY(t,e){1&t&&(ls(0,"div",5),ls(1,"mat-icon",2),rl(2,"settings"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol("",Lu(4,2,"routes.details.specific-fields-titles.app")," "))}function $Y(t,e){1&t&&(ls(0,"div",5),ls(1,"mat-icon",2),rl(2,"swap_horiz"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol("",Lu(4,2,"routes.details.specific-fields-titles.forward")," "))}function QY(t,e){1&t&&(ls(0,"div",5),ls(1,"mat-icon",2),rl(2,"arrow_forward"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol("",Lu(4,2,"routes.details.specific-fields-titles.intermediary-forward")," "))}function XY(t,e){if(1&t&&(ls(0,"div"),ls(1,"div",3),ls(2,"span"),rl(3),Du(4,"translate"),us(),rl(5),us(),ls(6,"div",3),ls(7,"span"),rl(8),Du(9,"translate"),us(),rl(10),us(),us()),2&t){var n=Ms(2);Gr(3),al(Lu(4,5,"routes.details.specific-fields.route-id")),Gr(2),ol(" ",n.routeRule.forwardFields?n.routeRule.forwardFields.nextRid:n.routeRule.intermediaryForwardFields.nextRid," "),Gr(3),al(Lu(9,7,"routes.details.specific-fields.transport-id")),Gr(2),sl(" ",n.routeRule.forwardFields?n.routeRule.forwardFields.nextTid:n.routeRule.intermediaryForwardFields.nextTid," ",n.getLabel(n.routeRule.forwardFields?n.routeRule.forwardFields.nextTid:n.routeRule.intermediaryForwardFields.nextTid)," ")}}function tF(t,e){if(1&t&&(ls(0,"div"),ls(1,"div",3),ls(2,"span"),rl(3),Du(4,"translate"),us(),rl(5),us(),ls(6,"div",3),ls(7,"span"),rl(8),Du(9,"translate"),us(),rl(10),us(),ls(11,"div",3),ls(12,"span"),rl(13),Du(14,"translate"),us(),rl(15),us(),ls(16,"div",3),ls(17,"span"),rl(18),Du(19,"translate"),us(),rl(20),us(),us()),2&t){var n=Ms(2);Gr(3),al(Lu(4,10,"routes.details.specific-fields.destination-pk")),Gr(2),sl(" ",n.routeRule.appFields?n.routeRule.appFields.routeDescriptor.dstPk:n.routeRule.forwardFields.routeDescriptor.dstPk," ",n.getLabel(n.routeRule.appFields?n.routeRule.appFields.routeDescriptor.dstPk:n.routeRule.forwardFields.routeDescriptor.dstPk)," "),Gr(3),al(Lu(9,12,"routes.details.specific-fields.source-pk")),Gr(2),sl(" ",n.routeRule.appFields?n.routeRule.appFields.routeDescriptor.srcPk:n.routeRule.forwardFields.routeDescriptor.srcPk," ",n.getLabel(n.routeRule.appFields?n.routeRule.appFields.routeDescriptor.srcPk:n.routeRule.forwardFields.routeDescriptor.srcPk)," "),Gr(3),al(Lu(14,14,"routes.details.specific-fields.destination-port")),Gr(2),ol(" ",n.routeRule.appFields?n.routeRule.appFields.routeDescriptor.dstPort:n.routeRule.forwardFields.routeDescriptor.dstPort," "),Gr(3),al(Lu(19,16,"routes.details.specific-fields.source-port")),Gr(2),ol(" ",n.routeRule.appFields?n.routeRule.appFields.routeDescriptor.srcPort:n.routeRule.forwardFields.routeDescriptor.srcPort," ")}}function eF(t,e){if(1&t&&(ls(0,"div"),ls(1,"div",5),ls(2,"mat-icon",2),rl(3,"list"),us(),rl(4),Du(5,"translate"),us(),ls(6,"div",3),ls(7,"span"),rl(8),Du(9,"translate"),us(),rl(10),us(),ls(11,"div",3),ls(12,"span"),rl(13),Du(14,"translate"),us(),rl(15),us(),ls(16,"div",3),ls(17,"span"),rl(18),Du(19,"translate"),us(),rl(20),us(),ns(21,ZY,5,4,"div",6),ns(22,$Y,5,4,"div",6),ns(23,QY,5,4,"div",6),ns(24,XY,11,9,"div",4),ns(25,tF,21,18,"div",4),us()),2&t){var n=Ms();Gr(2),os("inline",!0),Gr(2),ol("",Lu(5,13,"routes.details.summary.title")," "),Gr(4),al(Lu(9,15,"routes.details.summary.keep-alive")),Gr(2),ol(" ",n.routeRule.ruleSummary.keepAlive," "),Gr(3),al(Lu(14,17,"routes.details.summary.type")),Gr(2),ol(" ",n.getRuleTypeName(n.routeRule.ruleSummary.ruleType)," "),Gr(3),al(Lu(19,19,"routes.details.summary.key-route-id")),Gr(2),ol(" ",n.routeRule.ruleSummary.keyRouteId," "),Gr(1),os("ngIf",n.routeRule.appFields),Gr(1),os("ngIf",n.routeRule.forwardFields),Gr(1),os("ngIf",n.routeRule.intermediaryForwardFields),Gr(1),os("ngIf",n.routeRule.forwardFields||n.routeRule.intermediaryForwardFields),Gr(1),os("ngIf",n.routeRule.appFields&&n.routeRule.appFields.routeDescriptor||n.routeRule.forwardFields&&n.routeRule.forwardFields.routeDescriptor)}}var nF=function(){function t(t,e,n){this.dialogRef=e,this.storageService=n,this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Intermediary forward"]]),this.routeRule=t}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.largeModalWidth,e.open(t,i)},t.prototype.getRuleTypeName=function(t){return this.ruleTypes.has(t)?this.ruleTypes.get(t):t.toString()},t.prototype.closePopup=function(){this.dialogRef.close()},t.prototype.getLabel=function(t){var e=this.storageService.getLabelInfo(t);return e?" ("+e.label+")":""},t.\u0275fac=function(e){return new(e||t)(rs(Fx),rs(Ix),rs(Kb))},t.\u0275cmp=Fe({type:t,selectors:[["app-route-details"]],decls:19,vars:16,consts:[[1,"info-dialog",3,"headline"],[1,"title","mt-0"],[3,"inline"],[1,"item"],[4,"ngIf"],[1,"title"],["class","title",4,"ngIf"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"div"),ls(3,"div",1),ls(4,"mat-icon",2),rl(5,"list"),us(),rl(6),Du(7,"translate"),us(),ls(8,"div",3),ls(9,"span"),rl(10),Du(11,"translate"),us(),rl(12),us(),ls(13,"div",3),ls(14,"span"),rl(15),Du(16,"translate"),us(),rl(17),us(),ns(18,eF,26,21,"div",4),us(),us()),2&t&&(os("headline",Lu(1,8,"routes.details.title")),Gr(4),os("inline",!0),Gr(2),ol("",Lu(7,10,"routes.details.basic.title")," "),Gr(4),al(Lu(11,12,"routes.details.basic.key")),Gr(2),ol(" ",e.routeRule.key," "),Gr(3),al(Lu(16,14,"routes.details.basic.rule")),Gr(2),ol(" ",e.routeRule.rule," "),Gr(1),os("ngIf",e.routeRule.ruleSummary))},directives:[xL,US,wh],pipes:[px],styles:[""]}),t}();function iF(t,e){1&t&&(ls(0,"span",14),rl(1),Du(2,"translate"),ls(3,"mat-icon",15),Du(4,"translate"),rl(5,"help"),us(),us()),2&t&&(Gr(1),ol(" ",Lu(2,3,"routes.title")," "),Gr(2),os("inline",!0)("matTooltip",Lu(4,5,"routes.info")))}function rF(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms().$implicit;Gr(1),al(Lu(2,1,n.translatableValue))}}function aF(t,e){if(1&t&&(ds(0),rl(1),hs()),2&t){var n=Ms().$implicit;Gr(1),al(n.value)}}function oF(t,e){if(1&t&&(ls(0,"div",19),ls(1,"span"),rl(2),Du(3,"translate"),us(),ns(4,rF,3,3,"ng-container",20),ns(5,aF,2,1,"ng-container",20),us()),2&t){var n=e.$implicit;Gr(2),ol("",Lu(3,3,n.filterName),": "),Gr(2),os("ngIf",n.translatableValue),Gr(1),os("ngIf",n.value)}}function sF(t,e){if(1&t){var n=ps();ls(0,"div",16),vs("click",(function(){return Cn(n),Ms().dataFilterer.removeFilters()})),ns(1,oF,6,5,"div",17),ls(2,"div",18),rl(3),Du(4,"translate"),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngForOf",i.dataFilterer.currentFiltersTexts),Gr(2),al(Lu(4,2,"filters.press-to-remove"))}}function lF(t,e){if(1&t){var n=ps();ls(0,"mat-icon",21),vs("click",(function(){return Cn(n),Ms().dataFilterer.changeFilters()})),Du(1,"translate"),rl(2,"filter_list"),us()}2&t&&os("inline",!0)("matTooltip",Lu(1,2,"filters.filter-action"))}function uF(t,e){1&t&&(ls(0,"mat-icon",22),rl(1,"more_horiz"),us()),2&t&&(Ms(),os("matMenuTriggerFor",is(9)))}var cF=function(t){return["/nodes",t,"routes"]};function dF(t,e){if(1&t&&cs(0,"app-paginator",23),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",wu(4,cF,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}function hF(t,e){if(1&t&&(ls(0,"mat-icon",36),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function fF(t,e){if(1&t&&(ls(0,"mat-icon",36),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function pF(t,e){if(1&t&&(ls(0,"mat-icon",36),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function mF(t,e){if(1&t&&(ls(0,"mat-icon",36),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function gF(t,e){if(1&t){var n=ps();ds(0),ls(1,"td"),ls(2,"app-labeled-element-text",41),vs("labelEdited",(function(){return Cn(n),Ms(3).refreshData()})),us(),us(),ls(3,"td"),ls(4,"app-labeled-element-text",41),vs("labelEdited",(function(){return Cn(n),Ms(3).refreshData()})),us(),us(),hs()}if(2&t){var i=Ms().$implicit,r=Ms(2);Gr(2),Ds("id",i.src),os("short",!0)("elementType",r.labeledElementTypes.Node),Gr(2),Ds("id",i.dst),os("short",!0)("elementType",r.labeledElementTypes.Node)}}function vF(t,e){if(1&t){var n=ps();ds(0),ls(1,"td"),rl(2,"---"),us(),ls(3,"td"),ls(4,"app-labeled-element-text",42),vs("labelEdited",(function(){return Cn(n),Ms(3).refreshData()})),us(),us(),hs()}if(2&t){var i=Ms().$implicit,r=Ms(2);Gr(4),Ds("id",i.dst),os("short",!0)("elementType",r.labeledElementTypes.Transport)}}function _F(t,e){1&t&&(ds(0),ls(1,"td"),rl(2,"---"),us(),ls(3,"td"),rl(4,"---"),us(),hs())}function yF(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td",38),ls(2,"mat-checkbox",39),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(3,"td"),rl(4),us(),ls(5,"td"),rl(6),us(),ns(7,gF,5,6,"ng-container",20),ns(8,vF,5,3,"ng-container",20),ns(9,_F,5,0,"ng-container",20),ls(10,"td",29),ls(11,"button",40),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).details(t)})),Du(12,"translate"),ls(13,"mat-icon",36),rl(14,"visibility"),us(),us(),ls(15,"button",40),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).delete(t.key)})),Du(16,"translate"),ls(17,"mat-icon",36),rl(18,"close"),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(2),os("checked",r.selections.get(i.key)),Gr(2),ol(" ",i.key," "),Gr(2),ol(" ",r.getTypeName(i.type)," "),Gr(1),os("ngIf",i.appFields||i.forwardFields),Gr(1),os("ngIf",!i.appFields&&!i.forwardFields&&i.intermediaryForwardFields),Gr(1),os("ngIf",!i.appFields&&!i.forwardFields&&!i.intermediaryForwardFields),Gr(2),os("matTooltip",Lu(12,10,"routes.details.title")),Gr(2),os("inline",!0),Gr(2),os("matTooltip",Lu(16,12,"routes.delete")),Gr(2),os("inline",!0)}}function bF(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.label")))}function kF(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.inverted-order")))}function wF(t,e){if(1&t){var n=ps();ds(0),ls(1,"div",44),ls(2,"span",1),rl(3),Du(4,"translate"),us(),rl(5,": "),ls(6,"app-labeled-element-text",47),vs("labelEdited",(function(){return Cn(n),Ms(3).refreshData()})),us(),us(),ls(7,"div",44),ls(8,"span",1),rl(9),Du(10,"translate"),us(),rl(11,": "),ls(12,"app-labeled-element-text",47),vs("labelEdited",(function(){return Cn(n),Ms(3).refreshData()})),us(),us(),hs()}if(2&t){var i=Ms().$implicit,r=Ms(2);Gr(3),al(Lu(4,6,"routes.source")),Gr(3),Ds("id",i.src),os("elementType",r.labeledElementTypes.Node),Gr(3),al(Lu(10,8,"routes.destination")),Gr(3),Ds("id",i.dst),os("elementType",r.labeledElementTypes.Node)}}function MF(t,e){if(1&t){var n=ps();ds(0),ls(1,"div",44),ls(2,"span",1),rl(3),Du(4,"translate"),us(),rl(5,": --- "),us(),ls(6,"div",44),ls(7,"span",1),rl(8),Du(9,"translate"),us(),rl(10,": "),ls(11,"app-labeled-element-text",47),vs("labelEdited",(function(){return Cn(n),Ms(3).refreshData()})),us(),us(),hs()}if(2&t){var i=Ms().$implicit,r=Ms(2);Gr(3),al(Lu(4,4,"routes.source")),Gr(5),al(Lu(9,6,"routes.destination")),Gr(3),Ds("id",i.dst),os("elementType",r.labeledElementTypes.Transport)}}function SF(t,e){1&t&&(ds(0),ls(1,"div",44),ls(2,"span",1),rl(3),Du(4,"translate"),us(),rl(5,": --- "),us(),ls(6,"div",44),ls(7,"span",1),rl(8),Du(9,"translate"),us(),rl(10,": --- "),us(),hs()),2&t&&(Gr(3),al(Lu(4,2,"routes.source")),Gr(5),al(Lu(9,4,"routes.destination")))}function xF(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td"),ls(2,"div",33),ls(3,"div",43),ls(4,"mat-checkbox",39),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(5,"div",34),ls(6,"div",44),ls(7,"span",1),rl(8),Du(9,"translate"),us(),rl(10),us(),ls(11,"div",44),ls(12,"span",1),rl(13),Du(14,"translate"),us(),rl(15),us(),ns(16,wF,13,10,"ng-container",20),ns(17,MF,12,8,"ng-container",20),ns(18,SF,11,6,"ng-container",20),us(),cs(19,"div",45),ls(20,"div",35),ls(21,"button",46),vs("click",(function(t){Cn(n);var i=e.$implicit,r=Ms(2);return t.stopPropagation(),r.showOptionsDialog(i)})),Du(22,"translate"),ls(23,"mat-icon"),rl(24),us(),us(),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(4),os("checked",r.selections.get(i.key)),Gr(4),al(Lu(9,10,"routes.key")),Gr(2),ol(": ",i.key," "),Gr(3),al(Lu(14,12,"routes.type")),Gr(2),ol(": ",r.getTypeName(i.type)," "),Gr(1),os("ngIf",i.appFields||i.forwardFields),Gr(1),os("ngIf",!i.appFields&&!i.forwardFields&&i.intermediaryForwardFields),Gr(1),os("ngIf",!i.appFields&&!i.forwardFields&&!i.intermediaryForwardFields),Gr(3),os("matTooltip",Lu(22,14,"common.options")),Gr(3),al("add")}}function CF(t,e){if(1&t&&cs(0,"app-view-all-link",48),2&t){var n=Ms(2);os("numberOfElements",n.filteredRoutes.length)("linkParts",wu(3,cF,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var DF=function(t,e){return{"small-node-list-margins":t,"full-node-list-margins":e}},LF=function(t){return{"d-lg-none d-xl-table":t}},TF=function(t){return{"d-lg-table d-xl-none":t}};function EF(t,e){if(1&t){var n=ps();ls(0,"div",24),ls(1,"div",25),ls(2,"table",26),ls(3,"tr"),cs(4,"th"),ls(5,"th",27),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.keySortData)})),rl(6),Du(7,"translate"),ns(8,hF,2,2,"mat-icon",28),us(),ls(9,"th",27),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.typeSortData)})),rl(10),Du(11,"translate"),ns(12,fF,2,2,"mat-icon",28),us(),ls(13,"th",27),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.sourceSortData)})),rl(14),Du(15,"translate"),ns(16,pF,2,2,"mat-icon",28),us(),ls(17,"th",27),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.destinationSortData)})),rl(18),Du(19,"translate"),ns(20,mF,2,2,"mat-icon",28),us(),cs(21,"th",29),us(),ns(22,yF,19,14,"tr",30),us(),ls(23,"table",31),ls(24,"tr",32),vs("click",(function(){return Cn(n),Ms().dataSorter.openSortingOrderModal()})),ls(25,"td"),ls(26,"div",33),ls(27,"div",34),ls(28,"div",1),rl(29),Du(30,"translate"),us(),ls(31,"div"),rl(32),Du(33,"translate"),ns(34,bF,3,3,"ng-container",20),ns(35,kF,3,3,"ng-container",20),us(),us(),ls(36,"div",35),ls(37,"mat-icon",36),rl(38,"keyboard_arrow_down"),us(),us(),us(),us(),us(),ns(39,xF,25,16,"tr",30),us(),ns(40,CF,1,5,"app-view-all-link",37),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngClass",Mu(31,DF,i.showShortList_,!i.showShortList_)),Gr(1),os("ngClass",wu(34,LF,i.showShortList_)),Gr(4),ol(" ",Lu(7,19,"routes.key")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.keySortData),Gr(2),ol(" ",Lu(11,21,"routes.type")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.typeSortData),Gr(2),ol(" ",Lu(15,23,"routes.source")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.sourceSortData),Gr(2),ol(" ",Lu(19,25,"routes.destination")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.destinationSortData),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngClass",wu(36,TF,i.showShortList_)),Gr(6),al(Lu(30,27,"tables.sorting-title")),Gr(3),ol("",Lu(33,29,i.dataSorter.currentSortingColumn.label)," "),Gr(2),os("ngIf",i.dataSorter.currentlySortingByLabel),Gr(1),os("ngIf",i.dataSorter.sortingInReverseOrder),Gr(2),os("inline",!0),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngIf",i.showShortList_&&i.numberOfPages>1)}}function PF(t,e){1&t&&(ls(0,"span",52),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"routes.empty")))}function OF(t,e){1&t&&(ls(0,"span",52),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"routes.empty-with-filter")))}function AF(t,e){if(1&t&&(ls(0,"div",24),ls(1,"div",49),ls(2,"mat-icon",50),rl(3,"warning"),us(),ns(4,PF,3,3,"span",51),ns(5,OF,3,3,"span",51),us(),us()),2&t){var n=Ms();Gr(2),os("inline",!0),Gr(2),os("ngIf",0===n.allRoutes.length),Gr(1),os("ngIf",0!==n.allRoutes.length)}}function IF(t,e){if(1&t&&cs(0,"app-paginator",23),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",wu(4,cF,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var YF=function(t){return{"paginator-icons-fixer":t}},FF=function(){function t(t,e,n,i,r,a,o){var s=this;this.routeService=t,this.dialog=e,this.route=n,this.router=i,this.snackbarService=r,this.translateService=a,this.storageService=o,this.listId="rl",this.keySortData=new VE(["key"],"routes.key",zE.Number),this.typeSortData=new VE(["type"],"routes.type",zE.Number),this.sourceSortData=new VE(["src"],"routes.source",zE.Text,["src_label"]),this.destinationSortData=new VE(["dst"],"routes.destination",zE.Text,["dst_label"]),this.labeledElementTypes=Gb,this.selections=new Map,this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"routes.filter-dialog.key",keyNameInElementsArray:"key",type:TE.TextInput,maxlength:8},{filterName:"routes.filter-dialog.source",keyNameInElementsArray:"src",secondaryKeyNameInElementsArray:"src_label",type:TE.TextInput,maxlength:66},{filterName:"routes.filter-dialog.destination",keyNameInElementsArray:"dst",secondaryKeyNameInElementsArray:"dst_label",type:TE.TextInput,maxlength:66}],this.ruleTypes=new Map([[0,"App"],[1,"Forward"],[2,"Int. forward"]]),this.operationSubscriptionsGroup=[],this.dataSorter=new WE(this.dialog,this.translateService,[this.keySortData,this.typeSortData,this.sourceSortData,this.destinationSortData],0,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe((function(){s.recalculateElementsToShow()}));var l={filterName:"routes.filter-dialog.type",keyNameInElementsArray:"type",type:TE.Select,printableLabelsForValues:[{value:"",label:"routes.filter-dialog.any-type-option"}]};this.ruleTypes.forEach((function(t,e){l.printableLabelsForValues.push({value:e+"",label:t})})),this.filterProperties=[l].concat(this.filterProperties),this.dataFilterer=new gP(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe((function(t){s.filteredRoutes=t,s.dataSorter.setData(s.filteredRoutes)})),this.navigationsSubscription=this.route.paramMap.subscribe((function(t){if(t.has("page")){var e=Number.parseInt(t.get("page"),10);(isNaN(e)||e<1)&&(e=1),s.currentPageInUrl=e,s.recalculateElementsToShow()}}))}return Object.defineProperty(t.prototype,"showShortList",{set:function(t){this.showShortList_=t,this.dataSorter.setData(this.filteredRoutes)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"routes",{set:function(t){var e=this;this.allRoutes=t,this.allRoutes.forEach((function(t){if(t.type=t.ruleSummary.ruleType||0===t.ruleSummary.ruleType?t.ruleSummary.ruleType:"",t.appFields||t.forwardFields){var n=t.appFields?t.appFields.routeDescriptor:t.forwardFields.routeDescriptor;t.src=n.srcPk,t.src_label=BE.getCompleteLabel(e.storageService,e.translateService,t.src),t.dst=n.dstPk,t.dst_label=BE.getCompleteLabel(e.storageService,e.translateService,t.dst)}else t.intermediaryForwardFields?(t.src="",t.src_label="",t.dst=t.intermediaryForwardFields.nextTid,t.dst_label=BE.getCompleteLabel(e.storageService,e.translateService,t.dst)):(t.src="",t.src_label="",t.dst="",t.dst_label="")})),this.dataFilterer.setData(this.allRoutes)},enumerable:!1,configurable:!0}),t.prototype.ngOnDestroy=function(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach((function(t){return t.unsubscribe()})),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()},t.prototype.refreshData=function(){uI.refreshCurrentDisplayedData()},t.prototype.getTypeName=function(t){return this.ruleTypes.has(t)?this.ruleTypes.get(t):"Unknown"},t.prototype.changeSelection=function(t){this.selections.get(t.key)?this.selections.set(t.key,!1):this.selections.set(t.key,!0)},t.prototype.hasSelectedElements=function(){if(!this.selections)return!1;var t=!1;return this.selections.forEach((function(e){e&&(t=!0)})),t},t.prototype.changeAllSelections=function(t){var e=this;this.selections.forEach((function(n,i){e.selections.set(i,t)}))},t.prototype.deleteSelected=function(){var t=this,e=SE.createConfirmationDialog(this.dialog,"routes.delete-selected-confirmation");e.componentInstance.operationAccepted.subscribe((function(){e.componentInstance.showProcessing();var n=[];t.selections.forEach((function(t,e){t&&n.push(e)})),t.deleteRecursively(n,e)}))},t.prototype.showOptionsDialog=function(t){var e=this;DE.openDialog(this.dialog,[{icon:"visibility",label:"routes.details.title"},{icon:"close",label:"routes.delete"}],"common.options").afterClosed().subscribe((function(n){1===n?e.details(t):2===n&&e.delete(t.key)}))},t.prototype.details=function(t){nF.openDialog(this.dialog,t)},t.prototype.delete=function(t){var e=this,n=SE.createConfirmationDialog(this.dialog,"routes.delete-confirmation");n.componentInstance.operationAccepted.subscribe((function(){n.componentInstance.showProcessing(),e.operationSubscriptionsGroup.push(e.startDeleting(t).subscribe((function(){n.close(),uI.refreshCurrentDisplayedData(),e.snackbarService.showDone("routes.deleted")}),(function(t){t=Mx(t),n.componentInstance.showDone("confirmation.error-header-text",t.translatableErrorMsg)})))}))},t.prototype.recalculateElementsToShow=function(){var t=this;if(this.currentPage=this.currentPageInUrl,this.filteredRoutes){var e=this.showShortList_?xx.maxShortListElements:xx.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredRoutes.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);var n=e*(this.currentPage-1);this.routesToShow=this.filteredRoutes.slice(n,n+e);var i=new Map;this.routesToShow.forEach((function(e){i.set(e.key,!0),t.selections.has(e.key)||t.selections.set(e.key,!1)}));var r=[];this.selections.forEach((function(t,e){i.has(e)||r.push(e)})),r.forEach((function(e){t.selections.delete(e)}))}else this.routesToShow=null,this.selections=new Map;this.dataSource=this.routesToShow},t.prototype.startDeleting=function(t){return this.routeService.delete(uI.getCurrentNodeKey(),t.toString())},t.prototype.deleteRecursively=function(t,e){var n=this;this.operationSubscriptionsGroup.push(this.startDeleting(t[t.length-1]).subscribe((function(){t.pop(),0===t.length?(e.close(),uI.refreshCurrentDisplayedData(),n.snackbarService.showDone("routes.deleted")):n.deleteRecursively(t,e)}),(function(t){uI.refreshCurrentDisplayedData(),t=Mx(t),e.componentInstance.showDone("confirmation.error-header-text",t.translatableErrorMsg)})))},t.\u0275fac=function(e){return new(e||t)(rs(uE),rs(jx),rs(z_),rs(ub),rs(Sx),rs(hx),rs(Kb))},t.\u0275cmp=Fe({type:t,selectors:[["app-route-list"]],inputs:{nodePK:"nodePK",showShortList:"showShortList",routes:"routes"},decls:23,vars:22,consts:[[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],["class","uppercase",4,"ngIf"],["class","filter-label subtle-transparent-button cursor-pointer",3,"click",4,"ngIf"],[1,"options"],[1,"options-container"],["class","small-icon",3,"inline","matTooltip","click",4,"ngIf"],[3,"matMenuTriggerFor",4,"ngIf"],[3,"overlapTrigger"],["selectionMenu","matMenu"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"disabled","click"],[3,"currentPage","numberOfPages","linkParts","queryParams",4,"ngIf"],["class","rounded-elevated-box mt-3",4,"ngIf"],[1,"uppercase"],[1,"help","d-none","d-md-inline",3,"inline","matTooltip"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],["class","item",4,"ngFor","ngForOf"],[1,"transparent-50"],[1,"item"],[4,"ngIf"],[1,"small-icon",3,"inline","matTooltip","click"],[3,"matMenuTriggerFor"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"click"],[3,"inline",4,"ngIf"],[1,"actions"],[4,"ngFor","ngForOf"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"inline"],[3,"numberOfElements","linkParts","queryParams",4,"ngIf"],[1,"selection-col"],[3,"checked","change"],["mat-icon-button","",1,"action-button","transparent-button",3,"matTooltip","click"],["shortTextLength","7",3,"short","id","elementType","labelEdited"],["shortTextLength","5",3,"short","id","elementType","labelEdited"],[1,"check-part"],[1,"list-row","long-content"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"matTooltip","click"],[3,"id","elementType","labelEdited"],[3,"numberOfElements","linkParts","queryParams"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],["class","font-sm",4,"ngIf"],[1,"font-sm"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ns(2,iF,6,7,"span",2),ns(3,sF,5,4,"div",3),us(),ls(4,"div",4),ls(5,"div",5),ns(6,lF,3,4,"mat-icon",6),ns(7,uF,2,1,"mat-icon",7),ls(8,"mat-menu",8,9),ls(10,"div",10),vs("click",(function(){return e.changeAllSelections(!0)})),rl(11),Du(12,"translate"),us(),ls(13,"div",10),vs("click",(function(){return e.changeAllSelections(!1)})),rl(14),Du(15,"translate"),us(),ls(16,"div",11),vs("click",(function(){return e.deleteSelected()})),rl(17),Du(18,"translate"),us(),us(),us(),ns(19,dF,1,6,"app-paginator",12),us(),us(),ns(20,EF,41,38,"div",13),ns(21,AF,6,3,"div",13),ns(22,IF,1,6,"app-paginator",12)),2&t&&(os("ngClass",wu(20,YF,!e.showShortList_&&e.numberOfPages>1&&e.dataSource)),Gr(2),os("ngIf",e.showShortList_),Gr(1),os("ngIf",e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0),Gr(3),os("ngIf",e.allRoutes&&e.allRoutes.length>0),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("overlapTrigger",!1),Gr(3),ol(" ",Lu(12,14,"selection.select-all")," "),Gr(3),ol(" ",Lu(15,16,"selection.unselect-all")," "),Gr(2),Ds("disabled",!e.hasSelectedElements()),Gr(1),ol(" ",Lu(18,18,"selection.delete-all")," "),Gr(2),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("ngIf",!e.dataSource||0===e.dataSource.length),Gr(1),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource))},directives:[vh,wh,cO,rO,US,jL,bh,pO,lA,kI,lS,BE,LI],pipes:[px],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:90px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]}),t}(),RF=function(){function t(){}return t.prototype.ngOnInit=function(){var t=this;this.dataSubscription=uI.currentNode.subscribe((function(e){t.nodePK=e.localPk,t.transports=e.transports,t.routes=e.routes}))},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-routing"]],decls:2,vars:6,consts:[[3,"transports","showShortList","nodePK"],[3,"routes","showShortList","nodePK"]],template:function(t,e){1&t&&(cs(0,"app-transport-list",0),cs(1,"app-route-list",1)),2&t&&(os("transports",e.transports)("showShortList",!0)("nodePK",e.nodePK),Gr(1),os("routes",e.routes)("showShortList",!0)("nodePK",e.nodePK))},directives:[JY,FF],styles:[""]}),t}(),NF=function(){function t(t){this.apiService=t}return t.prototype.changeAppState=function(t,e,n){return this.apiService.put("visors/"+t+"/apps/"+encodeURIComponent(e),{status:n?1:0})},t.prototype.changeAppAutostart=function(t,e,n){return this.changeAppSettings(t,e,{autostart:n})},t.prototype.changeAppSettings=function(t,e,n){return this.apiService.put("visors/"+t+"/apps/"+encodeURIComponent(e),n)},t.prototype.getLogMessages=function(t,e,n){var i=Wd(-1!==n?Date.now()-864e5*n:0,"yyyy-MM-ddTHH:mm:ssZZZZZ","en-US");return this.apiService.get("visors/"+t+"/apps/"+encodeURIComponent(e)+"/logs?since="+i).pipe(nt((function(t){return t.logs})))},t.\u0275prov=Ot({token:t,factory:t.\u0275fac=function(e){return new(e||t)(ge(eC))},providedIn:"root"}),t}();function HF(t,e){if(1&t&&(ls(0,"mat-option",4),rl(1),Du(2,"translate"),us()),2&t){var n=e.$implicit;os("value",n.days),Gr(1),al(Lu(2,2,n.text))}}var jF=function(){function t(t,e,n){this.data=t,this.dialogRef=e,this.formBuilder=n}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.smallModalWidth,e.open(t,i)},t.prototype.ngOnInit=function(){var t=this;this.filters=[{text:"apps.log.filter.7-days",days:7},{text:"apps.log.filter.1-month",days:30},{text:"apps.log.filter.3-months",days:90},{text:"apps.log.filter.6-months",days:180},{text:"apps.log.filter.1-year",days:365},{text:"apps.log.filter.all",days:-1}],this.form=this.formBuilder.group({filter:[this.data.days]}),this.formSubscription=this.form.get("filter").valueChanges.subscribe((function(e){t.dialogRef.close(t.filters.find((function(t){return t.days===e})))}))},t.prototype.ngOnDestroy=function(){this.formSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)(rs(Fx),rs(Ix),rs(pL))},t.\u0275cmp=Fe({type:t,selectors:[["app-log-filter"]],decls:7,vars:8,consts:[[3,"headline"],[3,"formGroup"],["formControlName","filter",3,"placeholder"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"form",1),ls(3,"mat-form-field"),ls(4,"mat-select",2),Du(5,"translate"),ns(6,HF,3,4,"mat-option",3),us(),us(),us(),us()),2&t&&(os("headline",Lu(1,4,"apps.log.filter.title")),Gr(2),os("formGroup",e.form),Gr(2),os("placeholder",Lu(5,6,"apps.log.filter.filter")),Gr(2),os("ngForOf",e.filters))},directives:[xL,jD,PC,UD,xT,uP,EC,QD,bh,QM],pipes:[px],styles:["mat-form-field[_ngcontent-%COMP%]{margin-bottom:-24px}"]}),t}(),BF=["content"];function VF(t,e){if(1&t&&(ls(0,"div",8),ls(1,"span",3),rl(2),us(),rl(3),us()),2&t){var n=e.$implicit;Gr(2),ol(" ",n.time," "),Gr(1),ol(" ",n.msg," ")}}function zF(t,e){1&t&&(ls(0,"div",9),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),ol(" ",Lu(2,1,"apps.log.empty")," "))}function WF(t,e){1&t&&cs(0,"app-loading-indicator",10),2&t&&os("showWhite",!1)}var UF=function(){function t(t,e,n,i){this.data=t,this.appsService=e,this.dialog=n,this.snackbarService=i,this.logMessages=[],this.loading=!1,this.currentFilter={text:"apps.log.filter.7-days",days:7},this.shouldShowError=!0}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.largeModalWidth,e.open(t,i)},t.prototype.ngOnInit=function(){this.loadData(0)},t.prototype.ngOnDestroy=function(){this.removeSubscription()},t.prototype.filter=function(){var t=this;jF.openDialog(this.dialog,this.currentFilter).afterClosed().subscribe((function(e){e&&(t.currentFilter=e,t.logMessages=[],t.loadData(0))}))},t.prototype.loadData=function(t){var e=this;this.removeSubscription(),this.loading=!0,this.subscription=pg(1).pipe(tE(t),st((function(){return e.appsService.getLogMessages(uI.getCurrentNodeKey(),e.data.name,e.currentFilter.days)}))).subscribe((function(t){return e.onLogsReceived(t)}),(function(t){return e.onLogsError(t)}))},t.prototype.removeSubscription=function(){this.subscription&&this.subscription.unsubscribe()},t.prototype.onLogsReceived=function(t){var e=this;void 0===t&&(t=[]),this.loading=!1,this.shouldShowError=!0,this.snackbarService.closeCurrentIfTemporaryError(),t.forEach((function(t){var n=t.startsWith("[")?0:-1,i=-1!==n?t.indexOf("]"):-1;e.logMessages.push(-1!==n&&-1!==i?{time:t.substr(n,i+1),msg:t.substr(i+1)}:{time:"",msg:t})})),setTimeout((function(){e.content.nativeElement.scrollTop=e.content.nativeElement.scrollHeight}))},t.prototype.onLogsError=function(t){t=Mx(t),this.shouldShowError&&(this.snackbarService.showError("common.loading-error",null,!0,t),this.shouldShowError=!1),this.loadData(xx.connectionRetryDelay)},t.\u0275fac=function(e){return new(e||t)(rs(Fx),rs(NF),rs(jx),rs(Sx))},t.\u0275cmp=Fe({type:t,selectors:[["app-log"]],viewQuery:function(t,e){var n;1&t&&Uu(BF,!0),2&t&&zu(n=Zu())&&(e.content=n.first)},decls:16,vars:14,consts:[[3,"headline","includeVerticalMargins","includeScrollableArea"],[1,"filter-link-container"],[1,"filter-link","subtle-transparent-button",3,"click"],[1,"transparent"],["content",""],["class","app-log-message",4,"ngFor","ngForOf"],["class","app-log-empty mt-3",4,"ngIf"],[3,"showWhite",4,"ngIf"],[1,"app-log-message"],[1,"app-log-empty","mt-3"],[3,"showWhite"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"div",1),ls(3,"div",2),vs("click",(function(){return e.filter()})),ls(4,"span",3),rl(5),Du(6,"translate"),us(),rl(7,"\xa0 "),ls(8,"span"),rl(9),Du(10,"translate"),us(),us(),us(),ls(11,"mat-dialog-content",null,4),ns(13,VF,4,2,"div",5),ns(14,zF,3,3,"div",6),ns(15,WF,1,1,"app-loading-indicator",7),us(),us()),2&t&&(os("headline",Lu(1,8,"apps.log.title"))("includeVerticalMargins",!1)("includeScrollableArea",!1),Gr(5),al(Lu(6,10,"apps.log.filter-button")),Gr(4),al(Lu(10,12,e.currentFilter.text)),Gr(4),os("ngForOf",e.logMessages),Gr(1),os("ngIf",!(e.loading||e.logMessages&&0!==e.logMessages.length)),Gr(1),os("ngIf",e.loading))},directives:[xL,Wx,bh,wh,gC],pipes:[px],styles:[".mat-dialog-content[_ngcontent-%COMP%]{font-size:.875rem}.app-log-message[_ngcontent-%COMP%]{margin-top:15px;word-break:break-word}.app-log-message[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:#999}.app-log-message[_ngcontent-%COMP%]:first-of-type{margin-top:0}.app-log-message[_ngcontent-%COMP%]:last-of-type{margin-bottom:24px}.filter-link-container[_ngcontent-%COMP%]{text-align:center;margin:15px 0}.filter-link-container[_ngcontent-%COMP%] .filter-link[_ngcontent-%COMP%]{display:inline-block;background:#f8f9f9;padding:5px 10px;border-radius:1000px;font-size:.875rem;text-align:center;color:#215f9e;cursor:pointer}.filter-link-container[_ngcontent-%COMP%] .filter-link[_ngcontent-%COMP%] .transparent[_ngcontent-%COMP%]{color:rgba(33,95,158,.5)}"]}),t}(),qF=["button"],GF=["firstInput"],KF=function(){function t(t,e,n,i,r,a){if(this.data=t,this.appsService=e,this.formBuilder=n,this.dialogRef=i,this.snackbarService=r,this.dialog=a,this.configuringVpn=!1,this.secureMode=!1,-1!==t.name.toLocaleLowerCase().indexOf("vpn")&&(this.configuringVpn=!0),this.data.args&&this.data.args.length>0)for(var o=0;o0),Gr(2),os("placeholder",Lu(6,8,"apps.vpn-socks-client-settings.filter-dialog.location")),Gr(3),os("placeholder",Lu(9,10,"apps.vpn-socks-client-settings.filter-dialog.pub-key")),Gr(4),ol(" ",Lu(13,12,"apps.vpn-socks-client-settings.filter-dialog.apply")," "))},directives:[xL,jD,PC,UD,wh,xT,MC,NT,EC,QD,uL,AL,uP,QM,bh,lP],pipes:[px],styles:[""]}),t}(),dR=["firstInput"],hR=function(){function t(t,e){this.dialogRef=t,this.formBuilder=e}return t.openDialog=function(e){var n=new Tx;return n.autoFocus=!1,n.width=xx.smallModalWidth,e.open(t,n)},t.prototype.ngOnInit=function(){var t=this;this.form=this.formBuilder.group({password:[""]}),setTimeout((function(){return t.firstInput.nativeElement.focus()}))},t.prototype.finish=function(){var t=this.form.get("password").value;this.dialogRef.close("-"+t)},t.\u0275fac=function(e){return new(e||t)(rs(Ix),rs(pL))},t.\u0275cmp=Fe({type:t,selectors:[["app-skysocks-client-password"]],viewQuery:function(t,e){var n;1&t&&Uu(dR,!0),2&t&&zu(n=Zu())&&(e.firstInput=n.first)},decls:13,vars:13,consts:[[3,"headline"],[3,"formGroup"],[1,"info"],["type","password","id","password","formControlName","password","maxlength","100","matInput","",3,"placeholder"],["firstInput",""],["color","primary","type","mat-raised-button",1,"float-right",3,"action"]],template:function(t,e){1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"form",1),ls(3,"div",2),rl(4),Du(5,"translate"),us(),ls(6,"mat-form-field"),cs(7,"input",3,4),Du(9,"translate"),us(),ls(10,"app-button",5),vs("action",(function(){return e.finish()})),rl(11),Du(12,"translate"),us(),us(),us()),2&t&&(os("headline",Lu(1,5,"apps.vpn-socks-client-settings.password-dialog.title")),Gr(2),os("formGroup",e.form),Gr(2),al(Lu(5,7,"apps.vpn-socks-client-settings.password-dialog.info")),Gr(3),os("placeholder",Lu(9,9,"apps.vpn-socks-client-settings.password-dialog.password")),Gr(4),ol(" ",Lu(12,11,"apps.vpn-socks-client-settings.password-dialog.continue-button")," "))},directives:[xL,jD,PC,UD,xT,MC,NT,EC,QD,uL,AL],pipes:[px],styles:[".info[_ngcontent-%COMP%]{font-size:.7rem;margin-bottom:15px}"]}),t}();function fR(t,e){1&t&&Cs(0)}var pR=["*"];function mR(t,e){}var gR=function(t){return{animationDuration:t}},vR=function(t,e){return{value:t,params:e}},_R=["tabBodyWrapper"],yR=["tabHeader"];function bR(t,e){}function kR(t,e){1&t&&ns(0,bR,0,0,"ng-template",9),2&t&&os("cdkPortalOutlet",Ms().$implicit.templateLabel)}function wR(t,e){1&t&&rl(0),2&t&&al(Ms().$implicit.textLabel)}function MR(t,e){if(1&t){var n=ps();ls(0,"div",6),vs("click",(function(){Cn(n);var t=e.$implicit,i=e.index,r=Ms(),a=is(1);return r._handleClick(t,a,i)})),ls(1,"div",7),ns(2,kR,1,1,"ng-template",8),ns(3,wR,1,1,"ng-template",8),us(),us()}if(2&t){var i=e.$implicit,r=e.index,a=Ms();Vs("mat-tab-label-active",a.selectedIndex==r),os("id",a._getTabLabelId(r))("disabled",i.disabled)("matRippleDisabled",i.disabled||a.disableRipple),ts("tabIndex",a._getTabIndex(i,r))("aria-posinset",r+1)("aria-setsize",a._tabs.length)("aria-controls",a._getTabContentId(r))("aria-selected",a.selectedIndex==r)("aria-label",i.ariaLabel||null)("aria-labelledby",!i.ariaLabel&&i.ariaLabelledby?i.ariaLabelledby:null),Gr(2),os("ngIf",i.templateLabel),Gr(1),os("ngIf",!i.templateLabel)}}function SR(t,e){if(1&t){var n=ps();ls(0,"mat-tab-body",10),vs("_onCentered",(function(){return Cn(n),Ms()._removeTabBodyWrapperHeight()}))("_onCentering",(function(t){return Cn(n),Ms()._setTabBodyWrapperHeight(t)})),us()}if(2&t){var i=e.$implicit,r=e.index,a=Ms();Vs("mat-tab-body-active",a.selectedIndex==r),os("id",a._getTabContentId(r))("content",i.content)("position",i.position)("origin",i.origin)("animationDuration",a.animationDuration),ts("aria-labelledby",a._getTabLabelId(r))}}var xR=["tabListContainer"],CR=["tabList"],DR=["nextPaginator"],LR=["previousPaginator"],TR=["mat-tab-nav-bar",""],ER=new se("MatInkBarPositioner",{providedIn:"root",factory:function(){return function(t){return{left:t?(t.offsetLeft||0)+"px":"0",width:t?(t.offsetWidth||0)+"px":"0"}}}}),PR=function(){var t=function(){function t(e,n,i,r){_(this,t),this._elementRef=e,this._ngZone=n,this._inkBarPositioner=i,this._animationMode=r}return b(t,[{key:"alignToElement",value:function(t){var e=this;this.show(),"undefined"!=typeof requestAnimationFrame?this._ngZone.runOutsideAngular((function(){requestAnimationFrame((function(){return e._setStyles(t)}))})):this._setStyles(t)}},{key:"show",value:function(){this._elementRef.nativeElement.style.visibility="visible"}},{key:"hide",value:function(){this._elementRef.nativeElement.style.visibility="hidden"}},{key:"_setStyles",value:function(t){var e=this._inkBarPositioner(t),n=this._elementRef.nativeElement;n.style.left=e.left,n.style.width=e.width}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Mc),rs(ER),rs(cg,8))},t.\u0275dir=Ve({type:t,selectors:[["mat-ink-bar"]],hostAttrs:[1,"mat-ink-bar"],hostVars:2,hostBindings:function(t,e){2&t&&Vs("_mat-animation-noopable","NoopAnimations"===e._animationMode)}}),t}(),OR=new se("MatTabContent"),AR=function(){var t=function t(e){_(this,t),this.template=e};return t.\u0275fac=function(e){return new(e||t)(rs(eu))},t.\u0275dir=Ve({type:t,selectors:[["","matTabContent",""]],features:[Cl([{provide:OR,useExisting:t}])]}),t}(),IR=new se("MatTabLabel"),YR=function(){var t=function(t){f(n,t);var e=v(n);function n(){return _(this,n),e.apply(this,arguments)}return n}($k);return t.\u0275fac=function(e){return FR(e||t)},t.\u0275dir=Ve({type:t,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[Cl([{provide:IR,useExisting:t}]),fl]}),t}(),FR=Bi(YR),RR=SM((function t(){_(this,t)})),NR=new se("MAT_TAB_GROUP"),HR=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i){var r;return _(this,n),(r=e.call(this))._viewContainerRef=t,r._closestTabGroup=i,r.textLabel="",r._contentPortal=null,r._stateChanges=new W,r.position=null,r.origin=null,r.isActive=!1,r}return b(n,[{key:"ngOnChanges",value:function(t){(t.hasOwnProperty("textLabel")||t.hasOwnProperty("disabled"))&&this._stateChanges.next()}},{key:"ngOnDestroy",value:function(){this._stateChanges.complete()}},{key:"ngOnInit",value:function(){this._contentPortal=new Gk(this._explicitContent||this._implicitContent,this._viewContainerRef)}},{key:"templateLabel",get:function(){return this._templateLabel},set:function(t){t&&(this._templateLabel=t)}},{key:"content",get:function(){return this._contentPortal}}]),n}(RR);return t.\u0275fac=function(e){return new(e||t)(rs(iu),rs(NR,8))},t.\u0275cmp=Fe({type:t,selectors:[["mat-tab"]],contentQueries:function(t,e,n){var i;1&t&&(Gu(n,IR,!0),Ku(n,OR,!0,eu)),2&t&&(zu(i=Zu())&&(e.templateLabel=i.first),zu(i=Zu())&&(e._explicitContent=i.first))},viewQuery:function(t,e){var n;1&t&&Wu(eu,!0),2&t&&zu(n=Zu())&&(e._implicitContent=n.first)},inputs:{disabled:"disabled",textLabel:["label","textLabel"],ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"]},exportAs:["matTab"],features:[fl,en],ngContentSelectors:pR,decls:1,vars:0,template:function(t,e){1&t&&(xs(),ns(0,fR,1,0,"ng-template"))},encapsulation:2}),t}(),jR={translateTab:jf("translateTab",[Uf("center, void, left-origin-center, right-origin-center",Wf({transform:"none"})),Uf("left",Wf({transform:"translate3d(-100%, 0, 0)",minHeight:"1px"})),Uf("right",Wf({transform:"translate3d(100%, 0, 0)",minHeight:"1px"})),Gf("* => left, * => right, left => center, right => center",Bf("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),Gf("void => left-origin-center",[Wf({transform:"translate3d(-100%, 0, 0)"}),Bf("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),Gf("void => right-origin-center",[Wf({transform:"translate3d(100%, 0, 0)"}),Bf("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])])},BR=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this,t,i,a))._host=r,o._centeringSub=C.EMPTY,o._leavingSub=C.EMPTY,o}return b(n,[{key:"ngOnInit",value:function(){var t=this;r(i(n.prototype),"ngOnInit",this).call(this),this._centeringSub=this._host._beforeCentering.pipe(Yv(this._host._isCenterPosition(this._host._position))).subscribe((function(e){e&&!t.hasAttached()&&t.attach(t._host._content)})),this._leavingSub=this._host._afterLeavingCenter.subscribe((function(){t.detach()}))}},{key:"ngOnDestroy",value:function(){r(i(n.prototype),"ngOnDestroy",this).call(this),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}}]),n}(Qk);return t.\u0275fac=function(e){return new(e||t)(rs(El),rs(iu),rs(Ut((function(){return zR}))),rs(id))},t.\u0275dir=Ve({type:t,selectors:[["","matTabBodyHost",""]],features:[fl]}),t}(),VR=function(){var t=function(){function t(e,n,i){var r=this;_(this,t),this._elementRef=e,this._dir=n,this._dirChangeSubscription=C.EMPTY,this._translateTabComplete=new W,this._onCentering=new Ou,this._beforeCentering=new Ou,this._afterLeavingCenter=new Ou,this._onCentered=new Ou(!0),this.animationDuration="500ms",n&&(this._dirChangeSubscription=n.change.subscribe((function(t){r._computePositionAnimationState(t),i.markForCheck()}))),this._translateTabComplete.pipe(lk((function(t,e){return t.fromState===e.fromState&&t.toState===e.toState}))).subscribe((function(t){r._isCenterPosition(t.toState)&&r._isCenterPosition(r._position)&&r._onCentered.emit(),r._isCenterPosition(t.fromState)&&!r._isCenterPosition(r._position)&&r._afterLeavingCenter.emit()}))}return b(t,[{key:"ngOnInit",value:function(){"center"==this._position&&null!=this.origin&&(this._position=this._computePositionFromOrigin(this.origin))}},{key:"ngOnDestroy",value:function(){this._dirChangeSubscription.unsubscribe(),this._translateTabComplete.complete()}},{key:"_onTranslateTabStarted",value:function(t){var e=this._isCenterPosition(t.toState);this._beforeCentering.emit(e),e&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}},{key:"_getLayoutDirection",value:function(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}},{key:"_isCenterPosition",value:function(t){return"center"==t||"left-origin-center"==t||"right-origin-center"==t}},{key:"_computePositionAnimationState",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._getLayoutDirection();this._position=this._positionIndex<0?"ltr"==t?"left":"right":this._positionIndex>0?"ltr"==t?"right":"left":"center"}},{key:"_computePositionFromOrigin",value:function(t){var e=this._getLayoutDirection();return"ltr"==e&&t<=0||"rtl"==e&&t>0?"left-origin-center":"right-origin-center"}},{key:"position",set:function(t){this._positionIndex=t,this._computePositionAnimationState()}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Yk,8),rs(xo))},t.\u0275dir=Ve({type:t,inputs:{animationDuration:"animationDuration",position:"position",_content:["content","_content"],origin:"origin"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_afterLeavingCenter:"_afterLeavingCenter",_onCentered:"_onCentered"}}),t}(),zR=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r){return _(this,n),e.call(this,t,i,r)}return n}(VR);return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(Yk,8),rs(xo))},t.\u0275cmp=Fe({type:t,selectors:[["mat-tab-body"]],viewQuery:function(t,e){var n;1&t&&Uu(Xk,!0),2&t&&zu(n=Zu())&&(e._portalHost=n.first)},hostAttrs:[1,"mat-tab-body"],features:[fl],decls:3,vars:6,consts:[[1,"mat-tab-body-content"],["content",""],["matTabBodyHost",""]],template:function(t,e){1&t&&(ls(0,"div",0,1),vs("@translateTab.start",(function(t){return e._onTranslateTabStarted(t)}))("@translateTab.done",(function(t){return e._translateTabComplete.next(t)})),ns(2,mR,0,0,"ng-template",2),us()),2&t&&os("@translateTab",Mu(3,vR,e._position,wu(1,gR,e.animationDuration)))},directives:[BR],styles:[".mat-tab-body-content{height:100%;overflow:auto}.mat-tab-group-dynamic-height .mat-tab-body-content{overflow:hidden}\n"],encapsulation:2,data:{animation:[jR.translateTab]}}),t}(),WR=new se("MAT_TABS_CONFIG"),UR=0,qR=function t(){_(this,t)},GR=xM(CM((function t(e){_(this,t),this._elementRef=e})),"primary"),KR=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a){var o;return _(this,n),(o=e.call(this,t))._changeDetectorRef=i,o._animationMode=a,o._tabs=new Iu,o._indexToSelect=0,o._tabBodyWrapperHeight=0,o._tabsSubscription=C.EMPTY,o._tabLabelSubscription=C.EMPTY,o._dynamicHeight=!1,o._selectedIndex=null,o.headerPosition="above",o.selectedIndexChange=new Ou,o.focusChange=new Ou,o.animationDone=new Ou,o.selectedTabChange=new Ou(!0),o._groupId=UR++,o.animationDuration=r&&r.animationDuration?r.animationDuration:"500ms",o.disablePagination=!(!r||null==r.disablePagination)&&r.disablePagination,o}return b(n,[{key:"ngAfterContentChecked",value:function(){var t=this,e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){var n=null==this._selectedIndex;n||this.selectedTabChange.emit(this._createChangeEvent(e)),Promise.resolve().then((function(){t._tabs.forEach((function(t,n){return t.isActive=n===e})),n||t.selectedIndexChange.emit(e)}))}this._tabs.forEach((function(n,i){n.position=i-e,null==t._selectedIndex||0!=n.position||n.origin||(n.origin=e-t._selectedIndex)})),this._selectedIndex!==e&&(this._selectedIndex=e,this._changeDetectorRef.markForCheck())}},{key:"ngAfterContentInit",value:function(){var t=this;this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe((function(){if(t._clampTabIndex(t._indexToSelect)===t._selectedIndex)for(var e=t._tabs.toArray(),n=0;n.mat-tab-header .mat-tab-label{flex-basis:0;flex-grow:1}.mat-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-tab-body-wrapper{transition:none;animation:none}.mat-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;flex-basis:100%}.mat-tab-body.mat-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-tab-group.mat-tab-group-dynamic-height .mat-tab-body.mat-tab-body-active{overflow-y:hidden}\n"],encapsulation:2}),t}(),ZR=SM((function t(){_(this,t)})),$R=function(){var t=function(t){f(n,t);var e=v(n);function n(t){var i;return _(this,n),(i=e.call(this)).elementRef=t,i}return b(n,[{key:"focus",value:function(){this.elementRef.nativeElement.focus()}},{key:"getOffsetLeft",value:function(){return this.elementRef.nativeElement.offsetLeft}},{key:"getOffsetWidth",value:function(){return this.elementRef.nativeElement.offsetWidth}}]),n}(ZR);return t.\u0275fac=function(e){return new(e||t)(rs(Pl))},t.\u0275dir=Ve({type:t,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(t,e){2&t&&(ts("aria-disabled",!!e.disabled),Vs("mat-tab-disabled",e.disabled))},inputs:{disabled:"disabled"},features:[fl]}),t}(),QR=Pk({passive:!0}),XR=function(){var t=function(){function t(e,n,i,r,a,o,s){var l=this;_(this,t),this._elementRef=e,this._changeDetectorRef=n,this._viewportRuler=i,this._dir=r,this._ngZone=a,this._platform=o,this._animationMode=s,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new W,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new W,this.disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new Ou,this.indexFocused=new Ou,a.runOutsideAngular((function(){ek(e.nativeElement,"mouseleave").pipe(yk(l._destroyed)).subscribe((function(){l._stopInterval()}))}))}return b(t,[{key:"ngAfterViewInit",value:function(){var t=this;ek(this._previousPaginator.nativeElement,"touchstart",QR).pipe(yk(this._destroyed)).subscribe((function(){t._handlePaginatorPress("before")})),ek(this._nextPaginator.nativeElement,"touchstart",QR).pipe(yk(this._destroyed)).subscribe((function(){t._handlePaginatorPress("after")}))}},{key:"ngAfterContentInit",value:function(){var t=this,e=this._dir?this._dir.change:pg(null),n=this._viewportRuler.change(150),i=function(){t.updatePagination(),t._alignInkBarToSelectedTab()};this._keyManager=new Xw(this._items).withHorizontalOrientation(this._getLayoutDirection()).withWrap(),this._keyManager.updateActiveItem(0),"undefined"!=typeof requestAnimationFrame?requestAnimationFrame(i):i(),ft(e,n,this._items.changes).pipe(yk(this._destroyed)).subscribe((function(){Promise.resolve().then(i),t._keyManager.withHorizontalOrientation(t._getLayoutDirection())})),this._keyManager.change.pipe(yk(this._destroyed)).subscribe((function(e){t.indexFocused.emit(e),t._setTabFocus(e)}))}},{key:"ngAfterContentChecked",value:function(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}},{key:"ngOnDestroy",value:function(){this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}},{key:"_handleKeydown",value:function(t){if(!iw(t))switch(t.keyCode){case 36:this._keyManager.setFirstItemActive(),t.preventDefault();break;case 35:this._keyManager.setLastItemActive(),t.preventDefault();break;case 13:case 32:this.focusIndex!==this.selectedIndex&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(t));break;default:this._keyManager.onKeydown(t)}}},{key:"_onContentChanges",value:function(){var t=this,e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run((function(){t.updatePagination(),t._alignInkBarToSelectedTab(),t._changeDetectorRef.markForCheck()})))}},{key:"updatePagination",value:function(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}},{key:"_isValidIndex",value:function(t){if(!this._items)return!0;var e=this._items?this._items.toArray()[t]:null;return!!e&&!e.disabled}},{key:"_setTabFocus",value:function(t){if(this._showPaginationControls&&this._scrollToLabel(t),this._items&&this._items.length){this._items.toArray()[t].focus();var e=this._tabListContainer.nativeElement,n=this._getLayoutDirection();e.scrollLeft="ltr"==n?0:e.scrollWidth-e.offsetWidth}}},{key:"_getLayoutDirection",value:function(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}},{key:"_updateTabScrollPosition",value:function(){if(!this.disablePagination){var t=this.scrollDistance,e=this._platform,n="ltr"===this._getLayoutDirection()?-t:t;this._tabList.nativeElement.style.transform="translateX(".concat(Math.round(n),"px)"),e&&(e.TRIDENT||e.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}}},{key:"_scrollHeader",value:function(t){return this._scrollTo(this._scrollDistance+("before"==t?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}},{key:"_handlePaginatorClick",value:function(t){this._stopInterval(),this._scrollHeader(t)}},{key:"_scrollToLabel",value:function(t){if(!this.disablePagination){var e=this._items?this._items.toArray()[t]:null;if(e){var n,i,r=this._tabListContainer.nativeElement.offsetWidth,a=e.elementRef.nativeElement,o=a.offsetLeft,s=a.offsetWidth;"ltr"==this._getLayoutDirection()?i=(n=o)+s:n=(i=this._tabList.nativeElement.offsetWidth-o)-s;var l=this.scrollDistance,u=this.scrollDistance+r;nu&&(this.scrollDistance+=i-u+60)}}}},{key:"_checkPaginationEnabled",value:function(){if(this.disablePagination)this._showPaginationControls=!1;else{var t=this._tabList.nativeElement.scrollWidth>this._elementRef.nativeElement.offsetWidth;t||(this.scrollDistance=0),t!==this._showPaginationControls&&this._changeDetectorRef.markForCheck(),this._showPaginationControls=t}}},{key:"_checkScrollingControls",value:function(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}},{key:"_getMaxScrollDistance",value:function(){return this._tabList.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}},{key:"_alignInkBarToSelectedTab",value:function(){var t=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,e=t?t.elementRef.nativeElement:null;e?this._inkBar.alignToElement(e):this._inkBar.hide()}},{key:"_stopInterval",value:function(){this._stopScrolling.next()}},{key:"_handlePaginatorPress",value:function(t,e){var n=this;e&&null!=e.button&&0!==e.button||(this._stopInterval(),gk(650,100).pipe(yk(ft(this._stopScrolling,this._destroyed))).subscribe((function(){var e=n._scrollHeader(t),i=e.distance;(0===i||i>=e.maxScrollDistance)&&n._stopInterval()})))}},{key:"_scrollTo",value:function(t){if(this.disablePagination)return{maxScrollDistance:0,distance:0};var e=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(e,t)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:e,distance:this._scrollDistance}}},{key:"selectedIndex",get:function(){return this._selectedIndex},set:function(t){t=Zb(t),this._selectedIndex!=t&&(this._selectedIndexChanged=!0,this._selectedIndex=t,this._keyManager&&this._keyManager.updateActiveItem(t))}},{key:"focusIndex",get:function(){return this._keyManager?this._keyManager.activeItemIndex:0},set:function(t){this._isValidIndex(t)&&this.focusIndex!==t&&this._keyManager&&this._keyManager.setActiveItem(t)}},{key:"scrollDistance",get:function(){return this._scrollDistance},set:function(t){this._scrollTo(t)}}]),t}();return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(xo),rs(Bk),rs(Yk,8),rs(Mc),rs(Dk),rs(cg,8))},t.\u0275dir=Ve({type:t,inputs:{disablePagination:"disablePagination"}}),t}(),tN=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s,l){var u;return _(this,n),(u=e.call(this,t,i,r,a,o,s,l))._disableRipple=!1,u}return b(n,[{key:"_itemSelected",value:function(t){t.preventDefault()}},{key:"disableRipple",get:function(){return this._disableRipple},set:function(t){this._disableRipple=Jb(t)}}]),n}(XR);return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(xo),rs(Bk),rs(Yk,8),rs(Mc),rs(Dk),rs(cg,8))},t.\u0275dir=Ve({type:t,inputs:{disableRipple:"disableRipple"},features:[fl]}),t}(),eN=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s,l){return _(this,n),e.call(this,t,i,r,a,o,s,l)}return n}(tN);return t.\u0275fac=function(e){return new(e||t)(rs(Pl),rs(xo),rs(Bk),rs(Yk,8),rs(Mc),rs(Dk),rs(cg,8))},t.\u0275cmp=Fe({type:t,selectors:[["mat-tab-header"]],contentQueries:function(t,e,n){var i;1&t&&Gu(n,$R,!1),2&t&&zu(i=Zu())&&(e._items=i)},viewQuery:function(t,e){var n;1&t&&(Wu(PR,!0),Wu(xR,!0),Wu(CR,!0),Uu(DR,!0),Uu(LR,!0)),2&t&&(zu(n=Zu())&&(e._inkBar=n.first),zu(n=Zu())&&(e._tabListContainer=n.first),zu(n=Zu())&&(e._tabList=n.first),zu(n=Zu())&&(e._nextPaginator=n.first),zu(n=Zu())&&(e._previousPaginator=n.first))},hostAttrs:[1,"mat-tab-header"],hostVars:4,hostBindings:function(t,e){2&t&&Vs("mat-tab-header-pagination-controls-enabled",e._showPaginationControls)("mat-tab-header-rtl","rtl"==e._getLayoutDirection())},inputs:{selectedIndex:"selectedIndex"},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[fl],ngContentSelectors:pR,decls:13,vars:8,consts:[["aria-hidden","true","mat-ripple","",1,"mat-tab-header-pagination","mat-tab-header-pagination-before","mat-elevation-z4",3,"matRippleDisabled","click","mousedown","touchend"],["previousPaginator",""],[1,"mat-tab-header-pagination-chevron"],[1,"mat-tab-label-container",3,"keydown"],["tabListContainer",""],["role","tablist",1,"mat-tab-list",3,"cdkObserveContent"],["tabList",""],[1,"mat-tab-labels"],["aria-hidden","true","mat-ripple","",1,"mat-tab-header-pagination","mat-tab-header-pagination-after","mat-elevation-z4",3,"matRippleDisabled","mousedown","click","touchend"],["nextPaginator",""]],template:function(t,e){1&t&&(xs(),ls(0,"div",0,1),vs("click",(function(){return e._handlePaginatorClick("before")}))("mousedown",(function(t){return e._handlePaginatorPress("before",t)}))("touchend",(function(){return e._stopInterval()})),cs(2,"div",2),us(),ls(3,"div",3,4),vs("keydown",(function(t){return e._handleKeydown(t)})),ls(5,"div",5,6),vs("cdkObserveContent",(function(){return e._onContentChanges()})),ls(7,"div",7),Cs(8),us(),cs(9,"mat-ink-bar"),us(),us(),ls(10,"div",8,9),vs("mousedown",(function(t){return e._handlePaginatorPress("after",t)}))("click",(function(){return e._handlePaginatorClick("after")}))("touchend",(function(){return e._stopInterval()})),cs(12,"div",2),us()),2&t&&(Vs("mat-tab-header-pagination-disabled",e._disableScrollBefore),os("matRippleDisabled",e._disableScrollBefore||e.disableRipple),Gr(5),Vs("_mat-animation-noopable","NoopAnimations"===e._animationMode),Gr(5),Vs("mat-tab-header-pagination-disabled",e._disableScrollAfter),os("matRippleDisabled",e._disableScrollAfter||e.disableRipple))},directives:[jM,Ww,PR],styles:['.mat-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-tab-header-pagination{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:transparent;touch-action:none}.mat-tab-header-pagination-controls-enabled .mat-tab-header-pagination{display:flex}.mat-tab-header-pagination-before,.mat-tab-header-rtl .mat-tab-header-pagination-after{padding-left:4px}.mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-rtl .mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-tab-header-rtl .mat-tab-header-pagination-before,.mat-tab-header-pagination-after{padding-right:4px}.mat-tab-header-rtl .mat-tab-header-pagination-before .mat-tab-header-pagination-chevron,.mat-tab-header-pagination-after .mat-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;content:"";height:8px;width:8px}.mat-tab-header-pagination-disabled{box-shadow:none;cursor:default}.mat-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-labels{display:flex}[mat-align-tabs=center]>.mat-tab-header .mat-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-tab-header .mat-tab-labels{justify-content:flex-end}.mat-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}._mat-animation-noopable.mat-tab-list{transition:none;animation:none}.mat-tab-label{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;position:relative}.mat-tab-label:focus{outline:none}.mat-tab-label:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-label:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-label.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-label.mat-tab-disabled{opacity:.5}.mat-tab-label .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-label{opacity:1}@media(max-width: 599px){.mat-tab-label{min-width:72px}}\n'],encapsulation:2}),t}(),nN=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s,l){var u;return _(this,n),(u=e.call(this,t,a,o,i,r,s,l))._disableRipple=!1,u.color="primary",u}return b(n,[{key:"_itemSelected",value:function(){}},{key:"ngAfterContentInit",value:function(){var t=this;this._items.changes.pipe(Yv(null),yk(this._destroyed)).subscribe((function(){t.updateActiveLink()})),r(i(n.prototype),"ngAfterContentInit",this).call(this)}},{key:"updateActiveLink",value:function(t){if(this._items){for(var e=this._items.toArray(),n=0;n.mat-tab-link-container .mat-tab-links{justify-content:center}[mat-align-tabs=end]>.mat-tab-link-container .mat-tab-links{justify-content:flex-end}.mat-ink-bar{position:absolute;bottom:0;height:2px;transition:500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable.mat-ink-bar{transition:none;animation:none}.mat-tab-group-inverted-header .mat-ink-bar{bottom:auto;top:0}.cdk-high-contrast-active .mat-ink-bar{outline:solid 2px;height:0}.mat-tab-link-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-tab-link{height:48px;padding:0 24px;cursor:pointer;box-sizing:border-box;opacity:.6;min-width:160px;text-align:center;display:inline-flex;justify-content:center;align-items:center;white-space:nowrap;vertical-align:top;text-decoration:none;position:relative;overflow:hidden;-webkit-tap-highlight-color:transparent}.mat-tab-link:focus{outline:none}.mat-tab-link:focus:not(.mat-tab-disabled){opacity:1}.cdk-high-contrast-active .mat-tab-link:focus{outline:dotted 2px;outline-offset:-2px}.mat-tab-link.mat-tab-disabled{cursor:default}.cdk-high-contrast-active .mat-tab-link.mat-tab-disabled{opacity:.5}.mat-tab-link .mat-tab-label-content{display:inline-flex;justify-content:center;align-items:center;white-space:nowrap}.cdk-high-contrast-active .mat-tab-link{opacity:1}[mat-stretch-tabs] .mat-tab-link{flex-basis:0;flex-grow:1}.mat-tab-link.mat-tab-disabled{pointer-events:none}@media(max-width: 599px){.mat-tab-link{min-width:72px}}\n'],encapsulation:2}),t}(),rN=DM(CM(SM((function t(){_(this,t)})))),aN=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,a,o,s){var l;return _(this,n),(l=e.call(this))._tabNavBar=t,l.elementRef=i,l._focusMonitor=o,l._isActive=!1,l.rippleConfig=r||{},l.tabIndex=parseInt(a)||0,"NoopAnimations"===s&&(l.rippleConfig.animation={enterDuration:0,exitDuration:0}),l}return b(n,[{key:"focus",value:function(){this.elementRef.nativeElement.focus()}},{key:"ngAfterViewInit",value:function(){this._focusMonitor.monitor(this.elementRef)}},{key:"ngOnDestroy",value:function(){this._focusMonitor.stopMonitoring(this.elementRef)}},{key:"active",get:function(){return this._isActive},set:function(t){t!==this._isActive&&(this._isActive=t,this._tabNavBar.updateActiveLink(this.elementRef))}},{key:"rippleDisabled",get:function(){return this.disabled||this.disableRipple||this._tabNavBar.disableRipple||!!this.rippleConfig.disabled}}]),n}(rN);return t.\u0275fac=function(e){return new(e||t)(rs(nN),rs(Pl),rs(HM,8),as("tabindex"),rs(dM),rs(cg,8))},t.\u0275dir=Ve({type:t,inputs:{active:"active"},features:[fl]}),t}(),oN=function(){var t=function(t){f(n,t);var e=v(n);function n(t,i,r,o,s,l,u,c){var d;return _(this,n),(d=e.call(this,t,i,s,l,u,c))._tabLinkRipple=new FM(a(d),r,i,o),d._tabLinkRipple.setupTriggerEvents(i.nativeElement),d}return b(n,[{key:"ngOnDestroy",value:function(){r(i(n.prototype),"ngOnDestroy",this).call(this),this._tabLinkRipple._removeTriggerEvents()}}]),n}(aN);return t.\u0275fac=function(e){return new(e||t)(rs(iN),rs(Pl),rs(Mc),rs(Dk),rs(HM,8),as("tabindex"),rs(dM),rs(cg,8))},t.\u0275dir=Ve({type:t,selectors:[["","mat-tab-link",""],["","matTabLink",""]],hostAttrs:[1,"mat-tab-link","mat-focus-indicator"],hostVars:7,hostBindings:function(t,e){2&t&&(ts("aria-current",e.active?"page":null)("aria-disabled",e.disabled)("tabIndex",e.tabIndex),Vs("mat-tab-disabled",e.disabled)("mat-tab-label-active",e.active))},inputs:{disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex"},exportAs:["matTabLink"],features:[fl]}),t}(),sN=function(){var t=function t(){_(this,t)};return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[rf,MM,ew,BM,Uw,mM],MM]}),t}(),lN=["button"],uN=["settingsButton"],cN=["firstInput"];function dN(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),ol(" ",Lu(2,1,"apps.vpn-socks-client-settings.remote-key-length-error")," "))}function hN(t,e){1&t&&(rl(0),Du(1,"translate")),2&t&&ol(" ",Lu(1,1,"apps.vpn-socks-client-settings.remote-key-chars-error")," ")}function fN(t,e){1&t&&(ls(0,"mat-form-field"),cs(1,"input",20),Du(2,"translate"),us()),2&t&&(Gr(1),os("placeholder",Lu(2,1,"apps.vpn-socks-client-settings.password")))}function pN(t,e){1&t&&(ls(0,"div",21),ls(1,"mat-icon",22),rl(2,"warning"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol(" ",Lu(4,2,"apps.vpn-socks-client-settings.password-history-warning")," "))}function mN(t,e){1&t&&cs(0,"app-loading-indicator",23),2&t&&os("showWhite",!1)}function gN(t,e){1&t&&(ls(0,"div",24),ls(1,"mat-icon",22),rl(2,"error"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol(" ",Lu(4,2,"apps.vpn-socks-client-settings.no-elements")," "))}function vN(t,e){1&t&&(ls(0,"div",31),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),ol(" ",Lu(2,1,"apps.vpn-socks-client-settings.no-filter")," "))}function _N(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms().$implicit;Gr(1),al(Lu(2,1,n[1]))}}function yN(t,e){if(1&t&&(ds(0),rl(1),hs()),2&t){var n=Ms().$implicit;Gr(1),al(n[2])}}function bN(t,e){if(1&t&&(ls(0,"div",31),ls(1,"span"),rl(2),Du(3,"translate"),us(),ns(4,_N,3,3,"ng-container",7),ns(5,yN,2,1,"ng-container",7),us()),2&t){var n=e.$implicit;Gr(2),ol("",Lu(3,3,n[0])," "),Gr(2),os("ngIf",n[1]),Gr(1),os("ngIf",n[2])}}function kN(t,e){1&t&&(ls(0,"div",24),ls(1,"mat-icon",22),rl(2,"error"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol(" ",Lu(4,2,"apps.vpn-socks-client-settings.no-elements-for-filters")," "))}var wN=function(t){return{highlighted:t}};function MN(t,e){if(1&t&&(ds(0),ls(1,"span",36),rl(2),us(),hs()),2&t){var n=e.$implicit,i=e.index;Gr(1),os("ngClass",wu(2,wN,i%2!=0)),Gr(1),al(n)}}function SN(t,e){if(1&t&&(ds(0),ls(1,"div",37),cs(2,"div"),us(),hs()),2&t){var n=Ms(2).$implicit;Gr(2),zs("background-image: url('assets/img/flags/"+n.country.toLocaleLowerCase()+".png');")}}function xN(t,e){if(1&t&&(ds(0),ls(1,"span",36),rl(2),us(),hs()),2&t){var n=e.$implicit,i=e.index;Gr(1),os("ngClass",wu(2,wN,i%2!=0)),Gr(1),al(n)}}function CN(t,e){if(1&t&&(ls(0,"div",31),ls(1,"span"),rl(2),Du(3,"translate"),us(),ls(4,"span"),rl(5,"\xa0 "),ns(6,SN,3,2,"ng-container",7),ns(7,xN,3,4,"ng-container",34),us(),us()),2&t){var n=Ms().$implicit,i=Ms(2);Gr(2),al(Lu(3,3,"apps.vpn-socks-client-settings.location")),Gr(4),os("ngIf",n.country),Gr(1),os("ngForOf",i.getHighlightedTextParts(n.location,i.currentFilters.location))}}function DN(t,e){if(1&t){var n=ps();ls(0,"div",32),ls(1,"button",25),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).saveChanges(t.pk,null,!1,t.location)})),ls(2,"div",33),ls(3,"div",31),ls(4,"span"),rl(5),Du(6,"translate"),us(),ls(7,"span"),rl(8,"\xa0"),ns(9,MN,3,4,"ng-container",34),us(),us(),ns(10,CN,8,5,"div",28),us(),us(),ls(11,"button",35),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).copyPk(t.pk)})),Du(12,"translate"),ls(13,"mat-icon",22),rl(14,"filter_none"),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(5),al(Lu(6,5,"apps.vpn-socks-client-settings.key")),Gr(4),os("ngForOf",r.getHighlightedTextParts(i.pk,r.currentFilters.key)),Gr(1),os("ngIf",i.location),Gr(1),os("matTooltip",Lu(12,7,"apps.vpn-socks-client-settings.copy-pk-info")),Gr(2),os("inline",!0)}}function LN(t,e){if(1&t){var n=ps();ds(0),ls(1,"button",25),vs("click",(function(){return Cn(n),Ms().changeFilters()})),ls(2,"div",26),ls(3,"div",27),ls(4,"mat-icon",22),rl(5,"filter_list"),us(),us(),ls(6,"div"),ns(7,vN,3,3,"div",28),ns(8,bN,6,5,"div",29),ls(9,"div",30),rl(10),Du(11,"translate"),us(),us(),us(),us(),ns(12,kN,5,4,"div",12),ns(13,DN,15,9,"div",14),hs()}if(2&t){var i=Ms();Gr(4),os("inline",!0),Gr(3),os("ngIf",0===i.currentFiltersTexts.length),Gr(1),os("ngForOf",i.currentFiltersTexts),Gr(2),al(Lu(11,6,"apps.vpn-socks-client-settings.click-to-change")),Gr(2),os("ngIf",0===i.filteredProxiesFromDiscovery.length),Gr(1),os("ngForOf",i.proxiesFromDiscoveryToShow)}}var TN=function(t,e){return{currentElementsRange:t,totalElements:e}};function EN(t,e){if(1&t){var n=ps();ls(0,"div",38),ls(1,"span"),rl(2),Du(3,"translate"),us(),ls(4,"button",39),vs("click",(function(){return Cn(n),Ms().goToPreviousPage()})),ls(5,"mat-icon"),rl(6,"chevron_left"),us(),us(),ls(7,"button",39),vs("click",(function(){return Cn(n),Ms().goToNextPage()})),ls(8,"mat-icon"),rl(9,"chevron_right"),us(),us(),us()}if(2&t){var i=Ms();Gr(2),al(Tu(3,1,"apps.vpn-socks-client-settings.pagination-info",Mu(4,TN,i.currentRange,i.filteredProxiesFromDiscovery.length)))}}var PN=function(t){return{number:t}};function ON(t,e){if(1&t&&(ls(0,"div"),ls(1,"div",24),ls(2,"mat-icon",22),rl(3,"error"),us(),rl(4),Du(5,"translate"),us(),us()),2&t){var n=Ms();Gr(2),os("inline",!0),Gr(2),ol(" ",Tu(5,2,"apps.vpn-socks-client-settings.no-history",wu(5,PN,n.maxHistoryElements))," ")}}function AN(t,e){1&t&&fs(0)}function IN(t,e){1&t&&fs(0)}function YN(t,e){if(1&t&&(ds(0),ls(1,"span"),rl(2),us(),hs()),2&t){var n=Ms(2).$implicit;Gr(2),ol(" ",n.note,"")}}function FN(t,e){1&t&&(ds(0),ls(1,"span"),rl(2),Du(3,"translate"),us(),hs()),2&t&&(Gr(2),ol(" ",Lu(3,1,"apps.vpn-socks-client-settings.note-entered-manually"),""))}function RN(t,e){if(1&t&&(ds(0),ls(1,"span"),rl(2),us(),hs()),2&t){var n=Ms(4).$implicit;Gr(2),ol(" (",n.location,")")}}function NN(t,e){if(1&t&&(ds(0),ls(1,"span"),rl(2),Du(3,"translate"),us(),ns(4,RN,3,1,"ng-container",7),hs()),2&t){var n=Ms(3).$implicit;Gr(2),ol(" ",Lu(3,2,"apps.vpn-socks-client-settings.note-obtained"),""),Gr(2),os("ngIf",n.location)}}function HN(t,e){if(1&t&&(ds(0),ns(1,FN,4,3,"ng-container",7),ns(2,NN,5,4,"ng-container",7),hs()),2&t){var n=Ms(2).$implicit;Gr(1),os("ngIf",n.enteredManually),Gr(1),os("ngIf",!n.enteredManually)}}function jN(t,e){if(1&t&&(ls(0,"div",45),ls(1,"div",46),ls(2,"div",31),ls(3,"span"),rl(4),Du(5,"translate"),us(),ls(6,"span"),rl(7),us(),us(),ls(8,"div",31),ls(9,"span"),rl(10),Du(11,"translate"),us(),ns(12,YN,3,1,"ng-container",7),ns(13,HN,3,2,"ng-container",7),us(),us(),ls(14,"div",47),ls(15,"div",48),ls(16,"mat-icon",22),rl(17,"add"),us(),us(),us(),us()),2&t){var n=Ms().$implicit;Gr(4),al(Lu(5,6,"apps.vpn-socks-client-settings.key")),Gr(3),ol(" ",n.key,""),Gr(3),al(Lu(11,8,"apps.vpn-socks-client-settings.note")),Gr(2),os("ngIf",n.note),Gr(1),os("ngIf",!n.note),Gr(3),os("inline",!0)}}function BN(t,e){if(1&t){var n=ps();ls(0,"div",32),ls(1,"button",40),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms().useFromHistory(t)})),ns(2,AN,1,0,"ng-container",41),us(),ls(3,"button",42),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms().changeNote(t)})),Du(4,"translate"),ls(5,"mat-icon",22),rl(6,"edit"),us(),us(),ls(7,"button",42),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms().removeFromHistory(t.key)})),Du(8,"translate"),ls(9,"mat-icon",22),rl(10,"close"),us(),us(),ls(11,"button",43),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms().openHistoryOptions(t)})),ns(12,IN,1,0,"ng-container",41),us(),ns(13,jN,18,10,"ng-template",null,44,tc),us()}if(2&t){var i=is(14);Gr(2),os("ngTemplateOutlet",i),Gr(1),os("matTooltip",Lu(4,6,"apps.vpn-socks-client-settings.change-note")),Gr(2),os("inline",!0),Gr(2),os("matTooltip",Lu(8,8,"apps.vpn-socks-client-settings.remove-entry")),Gr(2),os("inline",!0),Gr(3),os("ngTemplateOutlet",i)}}function VN(t,e){1&t&&(ls(0,"div",49),ls(1,"mat-icon",22),rl(2,"warning"),us(),rl(3),Du(4,"translate"),us()),2&t&&(Gr(1),os("inline",!0),Gr(2),ol(" ",Lu(4,2,"apps.vpn-socks-client-settings.settings-changed-alert")," "))}var zN=function(){function t(t,e,n,i,r,a,o,s){this.data=t,this.dialogRef=e,this.appsService=n,this.formBuilder=i,this.snackbarService=r,this.dialog=a,this.proxyDiscoveryService=o,this.clipboardService=s,this.socksHistoryStorageKey="SkysocksClientHistory_",this.vpnHistoryStorageKey="VpnClientHistory_",this.maxHistoryElements=10,this.maxElementsPerPage=10,this.countriesFromDiscovery=new Set,this.loadingFromDiscovery=!0,this.numberOfPages=1,this.currentPage=1,this.currentRange="1 - 1",this.currentFilters=new uR,this.currentFiltersTexts=[],this.configuringVpn=!1,this.killswitch=!1,this.initialKillswitchSetting=!1,this.working=!1,-1!==t.name.toLocaleLowerCase().indexOf("vpn")&&(this.configuringVpn=!0)}return t.openDialog=function(e,n){var i=new Tx;return i.data=n,i.autoFocus=!1,i.width=xx.largeModalWidth,e.open(t,i)},t.prototype.ngOnInit=function(){var t=this;this.discoverySubscription=this.proxyDiscoveryService.getServices(!this.configuringVpn).subscribe((function(e){t.proxiesFromDiscovery=e,t.proxiesFromDiscovery.forEach((function(e){e.country&&t.countriesFromDiscovery.add(e.country.toUpperCase())})),t.filterProxies(),t.loadingFromDiscovery=!1}));var e=localStorage.getItem(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey);this.history=e?JSON.parse(e):[];var n="";if(this.data.args&&this.data.args.length>0)for(var i=0;i=this.numberOfPages||(this.currentPage+=1,this.showCurrentPage())},t.prototype.goToPreviousPage=function(){this.currentPage<=1||(this.currentPage-=1,this.showCurrentPage())},t.prototype.showCurrentPage=function(){this.proxiesFromDiscoveryToShow=this.filteredProxiesFromDiscovery.slice((this.currentPage-1)*this.maxElementsPerPage,this.currentPage*this.maxElementsPerPage),this.currentRange=(this.currentPage-1)*this.maxElementsPerPage+1+" - ",this.currentRange+=this.currentPagethis.maxHistoryElements){var o=this.history.length-this.maxHistoryElements;this.history.splice(this.history.length-o,o)}this.form.get("pk").setValue(t);var s=JSON.stringify(this.history);localStorage.setItem(this.configuringVpn?this.vpnHistoryStorageKey:this.socksHistoryStorageKey,s),uI.refreshCurrentDisplayedData(),this.snackbarService.showDone("apps.vpn-socks-client-settings.changes-made"),this.working=!1,this.button.reset(!1),this.settingsButton.reset(!1)},t.prototype.onServerDataChangeError=function(t){this.working=!1,this.button.showError(!1),this.settingsButton.reset(!1),t=Mx(t),this.snackbarService.showError(t)},t.\u0275fac=function(e){return new(e||t)(rs(Fx),rs(Ix),rs(NF),rs(pL),rs(Sx),rs(jx),rs(QF),rs(LE))},t.\u0275cmp=Fe({type:t,selectors:[["app-skysocks-client-settings"]],viewQuery:function(t,e){var n;1&t&&(Uu(lN,!0),Uu(uN,!0),Uu(cN,!0)),2&t&&(zu(n=Zu())&&(e.button=n.first),zu(n=Zu())&&(e.settingsButton=n.first),zu(n=Zu())&&(e.firstInput=n.first))},decls:44,vars:46,consts:[[3,"headline"],[3,"label"],[3,"formGroup"],["id","pk","formControlName","pk","maxlength","66","matInput","",3,"placeholder"],["firstInput",""],[4,"ngIf","ngIfElse"],["hexError",""],[4,"ngIf"],["class","password-history-warning",4,"ngIf"],["color","primary",1,"float-right",3,"disabled","action"],["button",""],["class","loading-indicator",3,"showWhite",4,"ngIf"],["class","info-text",4,"ngIf"],["class","paginator",4,"ngIf"],["class","d-flex",4,"ngFor","ngForOf"],[1,"main-theme","settings-option"],["color","primary",3,"checked","change"],[1,"help-icon",3,"inline","matTooltip"],["class","settings-changed-warning",4,"ngIf"],["settingsButton",""],["id","password","type","password","formControlName","password","maxlength","100","matInput","",3,"placeholder"],[1,"password-history-warning"],[3,"inline"],[1,"loading-indicator",3,"showWhite"],[1,"info-text"],["mat-button","",1,"list-button","grey-button-background","w-100",3,"click"],[1,"filter-button-content"],[1,"icon-area"],["class","item",4,"ngIf"],["class","item",4,"ngFor","ngForOf"],[1,"blue-part"],[1,"item"],[1,"d-flex"],[1,"button-content"],[4,"ngFor","ngForOf"],["mat-button","",1,"list-button","grey-button-background",3,"matTooltip","click"],[3,"ngClass"],[1,"flag-container"],[1,"paginator"],["mat-icon-button","",1,"hard-grey-button-background",3,"click"],["mat-button","",1,"list-button","grey-button-background","w-100","d-none","d-md-inline",3,"click"],[4,"ngTemplateOutlet"],["mat-button","",1,"list-button","grey-button-background","d-none","d-md-inline",3,"matTooltip","click"],["mat-button","",1,"list-button","grey-button-background","w-100","d-md-none",3,"click"],["content",""],[1,"button-content","d-flex"],[1,"full-size-area"],[1,"options-container"],[1,"small-button","d-md-none"],[1,"settings-changed-warning"]],template:function(t,e){if(1&t&&(ls(0,"app-dialog",0),Du(1,"translate"),ls(2,"mat-tab-group"),ls(3,"mat-tab",1),Du(4,"translate"),ls(5,"form",2),ls(6,"mat-form-field"),cs(7,"input",3,4),Du(9,"translate"),ls(10,"mat-error"),ns(11,dN,3,3,"ng-container",5),us(),ns(12,hN,2,3,"ng-template",null,6,tc),us(),ns(14,fN,3,3,"mat-form-field",7),ns(15,pN,5,4,"div",8),ls(16,"app-button",9,10),vs("action",(function(){return e.saveChanges()})),rl(18),Du(19,"translate"),us(),us(),us(),ls(20,"mat-tab",1),Du(21,"translate"),ns(22,mN,1,1,"app-loading-indicator",11),ns(23,gN,5,4,"div",12),ns(24,LN,14,8,"ng-container",7),ns(25,EN,10,7,"div",13),us(),ls(26,"mat-tab",1),Du(27,"translate"),ns(28,ON,6,7,"div",7),ns(29,BN,15,10,"div",14),us(),ls(30,"mat-tab",1),Du(31,"translate"),ls(32,"div",15),ls(33,"mat-checkbox",16),vs("change",(function(t){return e.setKillswitch(t)})),rl(34),Du(35,"translate"),ls(36,"mat-icon",17),Du(37,"translate"),rl(38,"help"),us(),us(),us(),ns(39,VN,5,4,"div",18),ls(40,"app-button",9,19),vs("action",(function(){return e.saveSettings()})),rl(42),Du(43,"translate"),us(),us(),us(),us()),2&t){var n=is(13);os("headline",Lu(1,26,"apps.vpn-socks-client-settings."+(e.configuringVpn?"vpn-title":"socks-title"))),Gr(3),os("label",Lu(4,28,"apps.vpn-socks-client-settings.remote-visor-tab")),Gr(2),os("formGroup",e.form),Gr(2),os("placeholder",Lu(9,30,"apps.vpn-socks-client-settings.public-key")),Gr(4),os("ngIf",!e.form.get("pk").hasError("pattern"))("ngIfElse",n),Gr(3),os("ngIf",e.configuringVpn),Gr(1),os("ngIf",e.form&&e.form.get("password").value),Gr(1),os("disabled",!e.form.valid||e.working),Gr(2),ol(" ",Lu(19,32,"apps.vpn-socks-client-settings.save")," "),Gr(2),os("label",Lu(21,34,"apps.vpn-socks-client-settings.discovery-tab")),Gr(2),os("ngIf",e.loadingFromDiscovery),Gr(1),os("ngIf",!e.loadingFromDiscovery&&0===e.proxiesFromDiscovery.length),Gr(1),os("ngIf",!e.loadingFromDiscovery&&e.proxiesFromDiscovery.length>0),Gr(1),os("ngIf",e.numberOfPages>1),Gr(1),os("label",Lu(27,36,"apps.vpn-socks-client-settings.history-tab")),Gr(2),os("ngIf",0===e.history.length),Gr(1),os("ngForOf",e.history),Gr(1),os("label",Lu(31,38,"apps.vpn-socks-client-settings.settings-tab")),Gr(3),os("checked",e.killswitch),Gr(1),ol(" ",Lu(35,40,"apps.vpn-socks-client-settings.killswitch-check")," "),Gr(2),os("inline",!0)("matTooltip",Lu(37,42,"apps.vpn-socks-client-settings.killswitch-info")),Gr(3),os("ngIf",e.killswitch!==e.initialKillswitchSetting),Gr(1),os("disabled",e.killswitch===e.initialKillswitchSetting||e.working),Gr(2),ol(" ",Lu(43,44,"apps.vpn-socks-client-settings.save-settings")," ")}},directives:[xL,JR,HR,jD,PC,UD,xT,MC,NT,EC,QD,uL,lT,wh,AL,bh,kI,US,jL,gC,lS,vh,Oh],pipes:[px],styles:["form[_ngcontent-%COMP%]{margin-top:15px}.info-text[_ngcontent-%COMP%]{margin-top:20px;margin-bottom:2px;text-align:center;color:#202226}.info-text[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px}.loading-indicator[_ngcontent-%COMP%]{height:100px}.password-history-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative;top:-5px}.list-button[_ngcontent-%COMP%]{border-bottom:1px solid rgba(0,0,0,.12)}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%]{padding:15px 0;white-space:normal;line-height:1.3;color:#202226;text-align:left;display:flex;font-size:.8rem;word-break:break-word}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .icon-area[_ngcontent-%COMP%]{font-size:20px;margin-right:15px;color:#999;opacity:.4;align-self:center}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{margin:4px 0}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .filter-button-content[_ngcontent-%COMP%] .blue-part[_ngcontent-%COMP%]{color:#215f9e}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%]{text-align:left;padding:15px 0;white-space:normal}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .full-size-area[_ngcontent-%COMP%]{flex-grow:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{line-height:1.3;margin:4px 0;font-size:.8rem;color:#202226;word-break:break-all}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-of-type{color:#999}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .highlighted[_ngcontent-%COMP%]{background-color:#ff0}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%]{flex-shrink:0;margin-left:5px;text-align:right;line-height:1}.list-button[_ngcontent-%COMP%] .button-content[_ngcontent-%COMP%] .options-container[_ngcontent-%COMP%] .small-button[_ngcontent-%COMP%]{width:24px;height:24px;line-height:14px;font-size:14px;margin-left:5px}.paginator[_ngcontent-%COMP%]{float:right;margin-top:15px}@media (max-width:767px){.paginator[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.7rem}}.paginator[_ngcontent-%COMP%] button[_ngcontent-%COMP%]{margin-left:5px}.settings-option[_ngcontent-%COMP%]{margin:15px 12px 10px}.settings-changed-warning[_ngcontent-%COMP%]{font-size:.7rem;opacity:.7;position:relative;top:-5px;padding:0 12px}"]}),t}();function WN(t,e){1&t&&(ls(0,"span",14),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"apps.apps-list.title")))}function UN(t,e){if(1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t){var n=Ms().$implicit;Gr(1),al(Lu(2,1,n.translatableValue))}}function qN(t,e){if(1&t&&(ds(0),rl(1),hs()),2&t){var n=Ms().$implicit;Gr(1),al(n.value)}}function GN(t,e){if(1&t&&(ls(0,"div",18),ls(1,"span"),rl(2),Du(3,"translate"),us(),ns(4,UN,3,3,"ng-container",19),ns(5,qN,2,1,"ng-container",19),us()),2&t){var n=e.$implicit;Gr(2),ol("",Lu(3,3,n.filterName),": "),Gr(2),os("ngIf",n.translatableValue),Gr(1),os("ngIf",n.value)}}function KN(t,e){if(1&t){var n=ps();ls(0,"div",15),vs("click",(function(){return Cn(n),Ms().dataFilterer.removeFilters()})),ns(1,GN,6,5,"div",16),ls(2,"div",17),rl(3),Du(4,"translate"),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngForOf",i.dataFilterer.currentFiltersTexts),Gr(2),al(Lu(4,2,"filters.press-to-remove"))}}function JN(t,e){if(1&t){var n=ps();ls(0,"mat-icon",20),vs("click",(function(){return Cn(n),Ms().dataFilterer.changeFilters()})),Du(1,"translate"),rl(2,"filter_list"),us()}2&t&&os("inline",!0)("matTooltip",Lu(1,2,"filters.filter-action"))}function ZN(t,e){1&t&&(ls(0,"mat-icon",21),rl(1,"more_horiz"),us()),2&t&&(Ms(),os("matMenuTriggerFor",is(9)))}var $N=function(t){return["/nodes",t,"apps-list"]};function QN(t,e){if(1&t&&cs(0,"app-paginator",22),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",wu(4,$N,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}function XN(t,e){if(1&t&&(ls(0,"mat-icon",37),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function tH(t,e){if(1&t&&(ls(0,"mat-icon",37),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function eH(t,e){if(1&t&&(ls(0,"mat-icon",37),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function nH(t,e){if(1&t&&(ls(0,"mat-icon",37),rl(1),us()),2&t){var n=Ms(2);os("inline",!0),Gr(1),al(n.dataSorter.sortingArrow)}}function iH(t,e){if(1&t){var n=ps();ls(0,"button",42),vs("click",(function(){Cn(n);var t=Ms().$implicit;return Ms(2).config(t)})),Du(1,"translate"),ls(2,"mat-icon",37),rl(3,"settings"),us(),us()}2&t&&(os("matTooltip",Lu(1,2,"apps.settings")),Gr(2),os("inline",!0))}function rH(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td",39),ls(2,"mat-checkbox",40),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(3,"td"),cs(4,"i",41),Du(5,"translate"),us(),ls(6,"td"),rl(7),us(),ls(8,"td"),rl(9),us(),ls(10,"td"),ls(11,"button",42),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeAppAutostart(t)})),Du(12,"translate"),ls(13,"mat-icon",37),rl(14),us(),us(),us(),ls(15,"td",30),ns(16,iH,4,4,"button",43),ls(17,"button",42),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).viewLogs(t)})),Du(18,"translate"),ls(19,"mat-icon",37),rl(20,"list"),us(),us(),ls(21,"button",42),vs("click",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeAppState(t)})),Du(22,"translate"),ls(23,"mat-icon",37),rl(24),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(2),os("checked",r.selections.get(i.name)),Gr(2),Us(1===i.status?"dot-green":"dot-red"),os("matTooltip",Lu(5,15,1===i.status?"apps.status-running-tooltip":"apps.status-stopped-tooltip")),Gr(3),ol(" ",i.name," "),Gr(2),ol(" ",i.port," "),Gr(2),os("matTooltip",Lu(12,17,i.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart")),Gr(2),os("inline",!0),Gr(1),al(i.autostart?"done":"close"),Gr(2),os("ngIf",r.appsWithConfig.has(i.name)),Gr(1),os("matTooltip",Lu(18,19,"apps.view-logs")),Gr(2),os("inline",!0),Gr(2),os("matTooltip",Lu(22,21,"apps."+(1===i.status?"stop-app":"start-app"))),Gr(2),os("inline",!0),Gr(1),al(1===i.status?"stop":"play_arrow")}}function aH(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.label")))}function oH(t,e){1&t&&(ds(0),rl(1),Du(2,"translate"),hs()),2&t&&(Gr(1),al(Lu(2,1,"tables.inverted-order")))}function sH(t,e){if(1&t){var n=ps();ls(0,"tr"),ls(1,"td"),ls(2,"div",34),ls(3,"div",44),ls(4,"mat-checkbox",40),vs("change",(function(){Cn(n);var t=e.$implicit;return Ms(2).changeSelection(t)})),us(),us(),ls(5,"div",35),ls(6,"div",45),ls(7,"span",1),rl(8),Du(9,"translate"),us(),rl(10),us(),ls(11,"div",45),ls(12,"span",1),rl(13),Du(14,"translate"),us(),rl(15),us(),ls(16,"div",45),ls(17,"span",1),rl(18),Du(19,"translate"),us(),rl(20,": "),ls(21,"span"),rl(22),Du(23,"translate"),us(),us(),ls(24,"div",45),ls(25,"span",1),rl(26),Du(27,"translate"),us(),rl(28,": "),ls(29,"span"),rl(30),Du(31,"translate"),us(),us(),us(),cs(32,"div",46),ls(33,"div",36),ls(34,"button",47),vs("click",(function(t){Cn(n);var i=e.$implicit,r=Ms(2);return t.stopPropagation(),r.showOptionsDialog(i)})),Du(35,"translate"),ls(36,"mat-icon"),rl(37),us(),us(),us(),us(),us(),us()}if(2&t){var i=e.$implicit,r=Ms(2);Gr(4),os("checked",r.selections.get(i.name)),Gr(4),al(Lu(9,15,"apps.apps-list.app-name")),Gr(2),ol(": ",i.name," "),Gr(3),al(Lu(14,17,"apps.apps-list.port")),Gr(2),ol(": ",i.port," "),Gr(3),al(Lu(19,19,"apps.apps-list.state")),Gr(3),Us((1===i.status?"green-text":"red-text")+" title"),Gr(1),ol(" ",Lu(23,21,1===i.status?"apps.status-running":"apps.status-stopped")," "),Gr(4),al(Lu(27,23,"apps.apps-list.auto-start")),Gr(3),Us((i.autostart?"green-text":"red-text")+" title"),Gr(1),ol(" ",Lu(31,25,i.autostart?"apps.apps-list.autostart-enabled":"apps.apps-list.autostart-disabled")," "),Gr(4),os("matTooltip",Lu(35,27,"common.options")),Gr(3),al("add")}}function lH(t,e){if(1&t&&cs(0,"app-view-all-link",48),2&t){var n=Ms(2);os("numberOfElements",n.filteredApps.length)("linkParts",wu(3,$N,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var uH=function(t,e){return{"small-node-list-margins":t,"full-node-list-margins":e}},cH=function(t){return{"d-lg-none d-xl-table":t}},dH=function(t){return{"d-lg-table d-xl-none":t}};function hH(t,e){if(1&t){var n=ps();ls(0,"div",23),ls(1,"div",24),ls(2,"table",25),ls(3,"tr"),cs(4,"th"),ls(5,"th",26),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.stateSortData)})),Du(6,"translate"),cs(7,"span",27),ns(8,XN,2,2,"mat-icon",28),us(),ls(9,"th",29),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.nameSortData)})),rl(10),Du(11,"translate"),ns(12,tH,2,2,"mat-icon",28),us(),ls(13,"th",29),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.portSortData)})),rl(14),Du(15,"translate"),ns(16,eH,2,2,"mat-icon",28),us(),ls(17,"th",29),vs("click",(function(){Cn(n);var t=Ms();return t.dataSorter.changeSortingOrder(t.autoStartSortData)})),rl(18),Du(19,"translate"),ns(20,nH,2,2,"mat-icon",28),us(),cs(21,"th",30),us(),ns(22,rH,25,23,"tr",31),us(),ls(23,"table",32),ls(24,"tr",33),vs("click",(function(){return Cn(n),Ms().dataSorter.openSortingOrderModal()})),ls(25,"td"),ls(26,"div",34),ls(27,"div",35),ls(28,"div",1),rl(29),Du(30,"translate"),us(),ls(31,"div"),rl(32),Du(33,"translate"),ns(34,aH,3,3,"ng-container",19),ns(35,oH,3,3,"ng-container",19),us(),us(),ls(36,"div",36),ls(37,"mat-icon",37),rl(38,"keyboard_arrow_down"),us(),us(),us(),us(),us(),ns(39,sH,38,29,"tr",31),us(),ns(40,lH,1,5,"app-view-all-link",38),us(),us()}if(2&t){var i=Ms();Gr(1),os("ngClass",Mu(31,uH,i.showShortList_,!i.showShortList_)),Gr(1),os("ngClass",wu(34,cH,i.showShortList_)),Gr(3),os("matTooltip",Lu(6,19,"apps.apps-list.state-tooltip")),Gr(3),os("ngIf",i.dataSorter.currentSortingColumn===i.stateSortData),Gr(2),ol(" ",Lu(11,21,"apps.apps-list.app-name")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.nameSortData),Gr(2),ol(" ",Lu(15,23,"apps.apps-list.port")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.portSortData),Gr(2),ol(" ",Lu(19,25,"apps.apps-list.auto-start")," "),Gr(2),os("ngIf",i.dataSorter.currentSortingColumn===i.autoStartSortData),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngClass",wu(36,dH,i.showShortList_)),Gr(6),al(Lu(30,27,"tables.sorting-title")),Gr(3),ol("",Lu(33,29,i.dataSorter.currentSortingColumn.label)," "),Gr(2),os("ngIf",i.dataSorter.currentlySortingByLabel),Gr(1),os("ngIf",i.dataSorter.sortingInReverseOrder),Gr(2),os("inline",!0),Gr(2),os("ngForOf",i.dataSource),Gr(1),os("ngIf",i.showShortList_&&i.numberOfPages>1)}}function fH(t,e){1&t&&(ls(0,"span",52),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"apps.apps-list.empty")))}function pH(t,e){1&t&&(ls(0,"span",52),rl(1),Du(2,"translate"),us()),2&t&&(Gr(1),al(Lu(2,1,"apps.apps-list.empty-with-filter")))}function mH(t,e){if(1&t&&(ls(0,"div",23),ls(1,"div",49),ls(2,"mat-icon",50),rl(3,"warning"),us(),ns(4,fH,3,3,"span",51),ns(5,pH,3,3,"span",51),us(),us()),2&t){var n=Ms();Gr(2),os("inline",!0),Gr(2),os("ngIf",0===n.allApps.length),Gr(1),os("ngIf",0!==n.allApps.length)}}function gH(t,e){if(1&t&&cs(0,"app-paginator",22),2&t){var n=Ms();os("currentPage",n.currentPage)("numberOfPages",n.numberOfPages)("linkParts",wu(4,$N,n.nodePK))("queryParams",n.dataFilterer.currentUrlQueryParams)}}var vH=function(t){return{"paginator-icons-fixer":t}},_H=function(){function t(t,e,n,i,r,a){var o=this;this.appsService=t,this.dialog=e,this.route=n,this.router=i,this.snackbarService=r,this.translateService=a,this.listId="ap",this.stateSortData=new VE(["status"],"apps.apps-list.state",zE.NumberReversed),this.nameSortData=new VE(["name"],"apps.apps-list.app-name",zE.Text),this.portSortData=new VE(["port"],"apps.apps-list.port",zE.Number),this.autoStartSortData=new VE(["autostart"],"apps.apps-list.auto-start",zE.Boolean),this.selections=new Map,this.appsWithConfig=new Map([["skysocks",!0],["skysocks-client",!0],["vpn-client",!0],["vpn-server",!0]]),this.numberOfPages=1,this.currentPage=1,this.currentPageInUrl=1,this.filterProperties=[{filterName:"apps.apps-list.filter-dialog.state",keyNameInElementsArray:"status",type:TE.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.state-options.any"},{value:"1",label:"apps.apps-list.filter-dialog.state-options.running"},{value:"0",label:"apps.apps-list.filter-dialog.state-options.stopped"}]},{filterName:"apps.apps-list.filter-dialog.name",keyNameInElementsArray:"name",type:TE.TextInput,maxlength:50},{filterName:"apps.apps-list.filter-dialog.port",keyNameInElementsArray:"port",type:TE.TextInput,maxlength:8},{filterName:"apps.apps-list.filter-dialog.autostart",keyNameInElementsArray:"autostart",type:TE.Select,printableLabelsForValues:[{value:"",label:"apps.apps-list.filter-dialog.autostart-options.any"},{value:"true",label:"apps.apps-list.filter-dialog.autostart-options.enabled"},{value:"false",label:"apps.apps-list.filter-dialog.autostart-options.disabled"}]}],this.refreshAgain=!1,this.operationSubscriptionsGroup=[],this.dataSorter=new WE(this.dialog,this.translateService,[this.stateSortData,this.nameSortData,this.portSortData,this.autoStartSortData],1,this.listId),this.dataSortedSubscription=this.dataSorter.dataSorted.subscribe((function(){o.recalculateElementsToShow()})),this.dataFilterer=new gP(this.dialog,this.route,this.router,this.filterProperties,this.listId),this.dataFiltererSubscription=this.dataFilterer.dataFiltered.subscribe((function(t){o.filteredApps=t,o.dataSorter.setData(o.filteredApps)})),this.navigationsSubscription=this.route.paramMap.subscribe((function(t){if(t.has("page")){var e=Number.parseInt(t.get("page"),10);(isNaN(e)||e<1)&&(e=1),o.currentPageInUrl=e,o.recalculateElementsToShow()}}))}return Object.defineProperty(t.prototype,"showShortList",{set:function(t){this.showShortList_=t,this.dataSorter.setData(this.filteredApps)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"apps",{set:function(t){this.allApps=t||[],this.dataFilterer.setData(this.allApps)},enumerable:!1,configurable:!0}),t.prototype.ngOnDestroy=function(){this.navigationsSubscription.unsubscribe(),this.operationSubscriptionsGroup.forEach((function(t){return t.unsubscribe()})),this.dataSortedSubscription.unsubscribe(),this.dataFiltererSubscription.unsubscribe(),this.dataSorter.dispose(),this.dataFilterer.dispose()},t.prototype.changeSelection=function(t){this.selections.get(t.name)?this.selections.set(t.name,!1):this.selections.set(t.name,!0)},t.prototype.hasSelectedElements=function(){if(!this.selections)return!1;var t=!1;return this.selections.forEach((function(e){e&&(t=!0)})),t},t.prototype.changeAllSelections=function(t){var e=this;this.selections.forEach((function(n,i){e.selections.set(i,t)}))},t.prototype.changeStateOfSelected=function(t){var e=this,n=[];if(this.selections.forEach((function(i,r){i&&(t&&1!==e.appsMap.get(r).status||!t&&1===e.appsMap.get(r).status)&&n.push(r)})),t)this.changeAppsValRecursively(n,!1,t);else{var i=SE.createConfirmationDialog(this.dialog,"apps.stop-selected-confirmation");i.componentInstance.operationAccepted.subscribe((function(){i.componentInstance.showProcessing(),e.changeAppsValRecursively(n,!1,t,i)}))}},t.prototype.changeAutostartOfSelected=function(t){var e=this,n=[];this.selections.forEach((function(i,r){i&&(t&&!e.appsMap.get(r).autostart||!t&&e.appsMap.get(r).autostart)&&n.push(r)}));var i=SE.createConfirmationDialog(this.dialog,t?"apps.enable-autostart-selected-confirmation":"apps.disable-autostart-selected-confirmation");i.componentInstance.operationAccepted.subscribe((function(){i.componentInstance.showProcessing(),e.changeAppsValRecursively(n,!0,t,i)}))},t.prototype.showOptionsDialog=function(t){var e=this,n=[{icon:"list",label:"apps.view-logs"},{icon:1===t.status?"stop":"play_arrow",label:"apps."+(1===t.status?"stop-app":"start-app")},{icon:t.autostart?"close":"done",label:t.autostart?"apps.apps-list.disable-autostart":"apps.apps-list.enable-autostart"}];this.appsWithConfig.has(t.name)&&n.push({icon:"settings",label:"apps.settings"}),DE.openDialog(this.dialog,n,"common.options").afterClosed().subscribe((function(n){1===n?e.viewLogs(t):2===n?e.changeAppState(t):3===n?e.changeAppAutostart(t):4===n&&e.config(t)}))},t.prototype.changeAppState=function(t){var e=this;if(1!==t.status)this.changeSingleAppVal(this.startChangingAppState(t.name,1!==t.status));else{var n=SE.createConfirmationDialog(this.dialog,"apps.stop-confirmation");n.componentInstance.operationAccepted.subscribe((function(){n.componentInstance.showProcessing(),e.changeSingleAppVal(e.startChangingAppState(t.name,1!==t.status),n)}))}},t.prototype.changeAppAutostart=function(t){var e=this,n=SE.createConfirmationDialog(this.dialog,t.autostart?"apps.disable-autostart-confirmation":"apps.enable-autostart-confirmation");n.componentInstance.operationAccepted.subscribe((function(){n.componentInstance.showProcessing(),e.changeSingleAppVal(e.startChangingAppAutostart(t.name,!t.autostart),n)}))},t.prototype.changeSingleAppVal=function(t,e){var n=this;void 0===e&&(e=null),this.operationSubscriptionsGroup.push(t.subscribe((function(){e&&e.close(),setTimeout((function(){n.refreshAgain=!0,uI.refreshCurrentDisplayedData()}),50),n.snackbarService.showDone("apps.operation-completed")}),(function(t){t=Mx(t),setTimeout((function(){n.refreshAgain=!0,uI.refreshCurrentDisplayedData()}),50),e?e.componentInstance.showDone("confirmation.error-header-text",t.translatableErrorMsg):n.snackbarService.showError(t)})))},t.prototype.viewLogs=function(t){1===t.status?UF.openDialog(this.dialog,t):this.snackbarService.showError("apps.apps-list.unavailable-logs-error")},t.prototype.config=function(t){"skysocks"===t.name||"vpn-server"===t.name?KF.openDialog(this.dialog,t):"skysocks-client"===t.name||"vpn-client"===t.name?zN.openDialog(this.dialog,t):this.snackbarService.showError("apps.error")},t.prototype.recalculateElementsToShow=function(){var t=this;if(this.currentPage=this.currentPageInUrl,this.filteredApps){var e=this.showShortList_?xx.maxShortListElements:xx.maxFullListElements;this.numberOfPages=Math.ceil(this.filteredApps.length/e),this.currentPage>this.numberOfPages&&(this.currentPage=this.numberOfPages);var n=e*(this.currentPage-1);this.appsToShow=this.filteredApps.slice(n,n+e),this.appsMap=new Map,this.appsToShow.forEach((function(e){t.appsMap.set(e.name,e),t.selections.has(e.name)||t.selections.set(e.name,!1)}));var i=[];this.selections.forEach((function(e,n){t.appsMap.has(n)||i.push(n)})),i.forEach((function(e){t.selections.delete(e)}))}else this.appsToShow=null,this.selections=new Map;this.dataSource=this.appsToShow,this.refreshAgain&&(this.refreshAgain=!1,setTimeout((function(){return uI.refreshCurrentDisplayedData()}),2e3))},t.prototype.startChangingAppState=function(t,e){return this.appsService.changeAppState(uI.getCurrentNodeKey(),t,e)},t.prototype.startChangingAppAutostart=function(t,e){return this.appsService.changeAppAutostart(uI.getCurrentNodeKey(),t,e)},t.prototype.changeAppsValRecursively=function(t,e,n,i){var r,a=this;if(void 0===i&&(i=null),!t||0===t.length)return setTimeout((function(){return uI.refreshCurrentDisplayedData()}),50),this.snackbarService.showWarning("apps.operation-unnecessary"),void(i&&i.close());r=e?this.startChangingAppAutostart(t[t.length-1],n):this.startChangingAppState(t[t.length-1],n),this.operationSubscriptionsGroup.push(r.subscribe((function(){t.pop(),0===t.length?(i&&i.close(),setTimeout((function(){a.refreshAgain=!0,uI.refreshCurrentDisplayedData()}),50),a.snackbarService.showDone("apps.operation-completed")):a.changeAppsValRecursively(t,e,n,i)}),(function(t){t=Mx(t),setTimeout((function(){a.refreshAgain=!0,uI.refreshCurrentDisplayedData()}),50),i?i.componentInstance.showDone("confirmation.error-header-text",t.translatableErrorMsg):a.snackbarService.showError(t)})))},t.\u0275fac=function(e){return new(e||t)(rs(NF),rs(jx),rs(z_),rs(ub),rs(Sx),rs(hx))},t.\u0275cmp=Fe({type:t,selectors:[["app-node-app-list"]],inputs:{nodePK:"nodePK",showShortList:"showShortList",apps:"apps"},decls:32,vars:34,consts:[[1,"generic-title-container","mt-4.5","d-flex",3,"ngClass"],[1,"title"],["class","uppercase",4,"ngIf"],["class","filter-label subtle-transparent-button cursor-pointer",3,"click",4,"ngIf"],[1,"options"],[1,"options-container"],["class","small-icon",3,"inline","matTooltip","click",4,"ngIf"],[3,"matMenuTriggerFor",4,"ngIf"],[3,"overlapTrigger"],["selectionMenu","matMenu"],["mat-menu-item","",3,"click"],["mat-menu-item","",3,"disabled","click"],[3,"currentPage","numberOfPages","linkParts","queryParams",4,"ngIf"],["class","rounded-elevated-box mt-3",4,"ngIf"],[1,"uppercase"],[1,"filter-label","subtle-transparent-button","cursor-pointer",3,"click"],["class","item",4,"ngFor","ngForOf"],[1,"transparent-50"],[1,"item"],[4,"ngIf"],[1,"small-icon",3,"inline","matTooltip","click"],[3,"matMenuTriggerFor"],[3,"currentPage","numberOfPages","linkParts","queryParams"],[1,"rounded-elevated-box","mt-3"],[1,"box-internal-container","overflow",3,"ngClass"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-none","d-md-table",3,"ngClass"],[1,"sortable-column",3,"matTooltip","click"],[1,"dot-outline-white"],[3,"inline",4,"ngIf"],[1,"sortable-column",3,"click"],[1,"actions"],[4,"ngFor","ngForOf"],["cellspacing","0","cellpadding","0",1,"responsive-table-translucid","d-md-none",3,"ngClass"],[1,"selectable",3,"click"],[1,"list-item-container"],[1,"left-part"],[1,"right-part"],[3,"inline"],[3,"numberOfElements","linkParts","queryParams",4,"ngIf"],[1,"selection-col"],[3,"checked","change"],[3,"matTooltip"],["mat-icon-button","",1,"big-action-button","transparent-button",3,"matTooltip","click"],["mat-icon-button","","class","big-action-button transparent-button",3,"matTooltip","click",4,"ngIf"],[1,"check-part"],[1,"list-row"],[1,"margin-part"],["mat-icon-button","",1,"transparent-button",3,"matTooltip","click"],[3,"numberOfElements","linkParts","queryParams"],[1,"box-internal-container"],[1,"alert-icon",3,"inline"],["class","font-sm",4,"ngIf"],[1,"font-sm"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ns(2,WN,3,3,"span",2),ns(3,KN,5,4,"div",3),us(),ls(4,"div",4),ls(5,"div",5),ns(6,JN,3,4,"mat-icon",6),ns(7,ZN,2,1,"mat-icon",7),ls(8,"mat-menu",8,9),ls(10,"div",10),vs("click",(function(){return e.changeAllSelections(!0)})),rl(11),Du(12,"translate"),us(),ls(13,"div",10),vs("click",(function(){return e.changeAllSelections(!1)})),rl(14),Du(15,"translate"),us(),ls(16,"div",11),vs("click",(function(){return e.changeStateOfSelected(!0)})),rl(17),Du(18,"translate"),us(),ls(19,"div",11),vs("click",(function(){return e.changeStateOfSelected(!1)})),rl(20),Du(21,"translate"),us(),ls(22,"div",11),vs("click",(function(){return e.changeAutostartOfSelected(!0)})),rl(23),Du(24,"translate"),us(),ls(25,"div",11),vs("click",(function(){return e.changeAutostartOfSelected(!1)})),rl(26),Du(27,"translate"),us(),us(),us(),ns(28,QN,1,6,"app-paginator",12),us(),us(),ns(29,hH,41,38,"div",13),ns(30,mH,6,3,"div",13),ns(31,gH,1,6,"app-paginator",12)),2&t&&(os("ngClass",wu(32,vH,!e.showShortList_&&e.numberOfPages>1&&e.dataSource)),Gr(2),os("ngIf",e.showShortList_),Gr(1),os("ngIf",e.dataFilterer.currentFiltersTexts&&e.dataFilterer.currentFiltersTexts.length>0),Gr(3),os("ngIf",e.allApps&&e.allApps.length>0),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("overlapTrigger",!1),Gr(3),ol(" ",Lu(12,20,"selection.select-all")," "),Gr(3),ol(" ",Lu(15,22,"selection.unselect-all")," "),Gr(2),Ds("disabled",!e.hasSelectedElements()),Gr(1),ol(" ",Lu(18,24,"selection.start-all")," "),Gr(2),Ds("disabled",!e.hasSelectedElements()),Gr(1),ol(" ",Lu(21,26,"selection.stop-all")," "),Gr(2),Ds("disabled",!e.hasSelectedElements()),Gr(1),ol(" ",Lu(24,28,"selection.enable-autostart-all")," "),Gr(2),Ds("disabled",!e.hasSelectedElements()),Gr(1),ol(" ",Lu(27,30,"selection.disable-autostart-all")," "),Gr(2),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource),Gr(1),os("ngIf",e.dataSource&&e.dataSource.length>0),Gr(1),os("ngIf",!e.dataSource||0===e.dataSource.length),Gr(1),os("ngIf",!e.showShortList_&&e.numberOfPages>1&&e.dataSource))},directives:[vh,wh,cO,rO,bh,US,jL,pO,lA,kI,lS,LI],pipes:[px],styles:[".actions[_ngcontent-%COMP%]{text-align:right;width:120px}.alert-icon[_ngcontent-%COMP%]{vertical-align:middle;margin-right:10px}"]}),t}(),yH=function(){function t(){}return t.prototype.ngOnInit=function(){var t=this;this.dataSubscription=uI.currentNode.subscribe((function(e){t.nodePK=e.localPk,t.apps=e.apps}))},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-apps"]],decls:1,vars:3,consts:[[3,"apps","showShortList","nodePK"]],template:function(t,e){1&t&&cs(0,"app-node-app-list",0),2&t&&os("apps",e.apps)("showShortList",!0)("nodePK",e.nodePK)},directives:[_H],styles:[""]}),t}();function bH(t,e){if(1&t&&cs(0,"app-transport-list",1),2&t){var n=Ms();os("transports",n.transports)("showShortList",!1)("nodePK",n.nodePK)}}var kH=function(){function t(){}return t.prototype.ngOnInit=function(){var t=this;this.dataSubscription=uI.currentNode.subscribe((function(e){t.nodePK=e.localPk,t.transports=e.transports}))},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-all-transports"]],decls:1,vars:1,consts:[[3,"transports","showShortList","nodePK",4,"ngIf"],[3,"transports","showShortList","nodePK"]],template:function(t,e){1&t&&ns(0,bH,1,3,"app-transport-list",0),2&t&&os("ngIf",e.transports)},directives:[wh,JY],styles:[""]}),t}();function wH(t,e){if(1&t&&cs(0,"app-route-list",1),2&t){var n=Ms();os("routes",n.routes)("showShortList",!1)("nodePK",n.nodePK)}}var MH=function(){function t(){}return t.prototype.ngOnInit=function(){var t=this;this.dataSubscription=uI.currentNode.subscribe((function(e){t.nodePK=e.localPk,t.routes=e.routes}))},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-all-routes"]],decls:1,vars:1,consts:[[3,"routes","showShortList","nodePK",4,"ngIf"],[3,"routes","showShortList","nodePK"]],template:function(t,e){1&t&&ns(0,wH,1,3,"app-route-list",0),2&t&&os("ngIf",e.routes)},directives:[wh,FF],styles:[""]}),t}();function SH(t,e){if(1&t&&cs(0,"app-node-app-list",1),2&t){var n=Ms();os("apps",n.apps)("showShortList",!1)("nodePK",n.nodePK)}}var xH=function(){function t(){}return t.prototype.ngOnInit=function(){var t=this;this.dataSubscription=uI.currentNode.subscribe((function(e){t.nodePK=e.localPk,t.apps=e.apps}))},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-all-apps"]],decls:1,vars:1,consts:[[3,"apps","showShortList","nodePK",4,"ngIf"],[3,"apps","showShortList","nodePK"]],template:function(t,e){1&t&&ns(0,SH,1,3,"app-node-app-list",0),2&t&&os("ngIf",e.apps)},directives:[wh,_H],styles:[""]}),t}(),CH=function(){function t(t){this.clipboardService=t,this.copyEvent=new Ou,this.errorEvent=new Ou,this.value=""}return t.prototype.ngOnDestroy=function(){this.copyEvent.complete(),this.errorEvent.complete()},t.prototype.copyToClipboard=function(){this.clipboardService.copy(this.value)?this.copyEvent.emit(this.value):this.errorEvent.emit()},t.\u0275fac=function(e){return new(e||t)(rs(LE))},t.\u0275dir=Ve({type:t,selectors:[["","clipboard",""]],hostBindings:function(t,e){1&t&&vs("click",(function(){return e.copyToClipboard()}))},inputs:{value:["clipboard","value"]},outputs:{copyEvent:"copyEvent",errorEvent:"errorEvent"}}),t}(),DH=function(t){return{text:t}},LH=function(){return{"tooltip-word-break":!0}},TH=function(){function t(t){this.snackbarService=t,this.short=!1,this.shortTextLength=5}return t.prototype.onCopyToClipboardClicked=function(){this.snackbarService.showDone("copy.copied")},t.\u0275fac=function(e){return new(e||t)(rs(Sx))},t.\u0275cmp=Fe({type:t,selectors:[["app-copy-to-clipboard-text"]],inputs:{short:"short",text:"text",shortTextLength:"shortTextLength"},decls:6,vars:14,consts:[[1,"wrapper","highlight-internal-icon",3,"clipboard","matTooltip","matTooltipClass","copyEvent"],[3,"short","showTooltip","shortTextLength","text"],[3,"inline"]],template:function(t,e){1&t&&(ls(0,"div",0),vs("copyEvent",(function(){return e.onCopyToClipboardClicked()})),Du(1,"translate"),cs(2,"app-truncated-text",1),rl(3," \xa0"),ls(4,"mat-icon",2),rl(5,"filter_none"),us(),us()),2&t&&(os("clipboard",e.text)("matTooltip",Tu(1,8,e.short?"copy.tooltip-with-text":"copy.tooltip",wu(11,DH,e.text)))("matTooltipClass",ku(13,LH)),Gr(2),os("short",e.short)("showTooltip",!1)("shortTextLength",e.shortTextLength)("text",e.text),Gr(2),os("inline",!0))},directives:[CH,jL,AE,US],pipes:[px],styles:['.cursor-pointer[_ngcontent-%COMP%], .highlight-internal-icon[_ngcontent-%COMP%]{cursor:pointer}.reactivate-mouse[_ngcontent-%COMP%], .wrapper[_ngcontent-%COMP%]{touch-action:auto!important;-webkit-user-select:initial!important;-moz-user-select:initial!important;-ms-user-select:initial!important;user-select:initial!important;-webkit-user-drag:auto!important;-webkit-tap-highlight-color:initial!important}.mouse-disabled[_ngcontent-%COMP%]{pointer-events:none}.clearfix[_ngcontent-%COMP%]:after{content:"";display:block;clear:both}.mt-4\\.5[_ngcontent-%COMP%]{margin-top:2rem!important}.highlight-internal-icon[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{opacity:.5}.highlight-internal-icon[_ngcontent-%COMP%]:hover mat-icon[_ngcontent-%COMP%]{opacity:.8}.transparent-button[_ngcontent-%COMP%]{opacity:.5}.transparent-button[_ngcontent-%COMP%]:hover{opacity:1}.subtle-transparent-button[_ngcontent-%COMP%]{opacity:.85}.subtle-transparent-button[_ngcontent-%COMP%]:hover{opacity:1}@media (max-width:767px),(min-width:992px) and (max-width:1299px){.small-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}@media (max-width:767px){.full-node-list-margins[_ngcontent-%COMP%]{padding:0!important}}.wrapper[_ngcontent-%COMP%]{display:inline}.wrapper[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{font-size:.6rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}']}),t}(),EH=n("WyAD"),PH=["chart"],OH=function(){function t(t){this.differ=t.find([]).create(null)}return t.prototype.ngAfterViewInit=function(){this.chart=new EH.Chart(this.chartElement.nativeElement,{type:"line",data:{labels:Array.from(Array(this.data.length).keys()),datasets:[{data:this.data,backgroundColor:["rgba(10, 15, 22, 0.4)"],borderColor:["rgba(10, 15, 22, 0.4)"],borderWidth:1}]},options:{maintainAspectRatio:!1,events:[],legend:{display:!1},tooltips:{enabled:!1},scales:{yAxes:[{display:!1,ticks:{suggestedMin:0}}],xAxes:[{display:!1}]},elements:{point:{radius:0}}}})},t.prototype.ngDoCheck=function(){this.differ.diff(this.data)&&this.chart&&this.chart.update()},t.\u0275fac=function(e){return new(e||t)(rs(Zl))},t.\u0275cmp=Fe({type:t,selectors:[["app-line-chart"]],viewQuery:function(t,e){var n;1&t&&Uu(PH,!0),2&t&&zu(n=Zu())&&(e.chartElement=n.first)},inputs:{data:"data"},decls:3,vars:0,consts:[[1,"chart-container"],["height","100"],["chart",""]],template:function(t,e){1&t&&(ls(0,"div",0),cs(1,"canvas",1,2),us())},styles:[".chart-container[_ngcontent-%COMP%]{position:relative;height:100px;width:100%;overflow:hidden;border-radius:10px}"]}),t}(),AH=function(){return{showValue:!0}},IH=function(){return{showUnit:!0}},YH=function(){function t(t){this.nodeService=t}return t.prototype.ngOnInit=function(){var t=this;this.dataSubscription=this.nodeService.specificNodeTrafficData.subscribe((function(e){t.data=e}))},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)(rs(fE))},t.\u0275cmp=Fe({type:t,selectors:[["app-charts"]],decls:26,vars:28,consts:[[1,"small-rounded-elevated-box","chart"],[3,"data"],[1,"info"],[1,"text"],[1,"rate"],[1,"value"],[1,"unit"]],template:function(t,e){1&t&&(ls(0,"div",0),cs(1,"app-line-chart",1),ls(2,"div",2),ls(3,"span",3),rl(4),Du(5,"translate"),us(),ls(6,"span",4),ls(7,"span",5),rl(8),Du(9,"autoScale"),us(),ls(10,"span",6),rl(11),Du(12,"autoScale"),us(),us(),us(),us(),ls(13,"div",0),cs(14,"app-line-chart",1),ls(15,"div",2),ls(16,"span",3),rl(17),Du(18,"translate"),us(),ls(19,"span",4),ls(20,"span",5),rl(21),Du(22,"autoScale"),us(),ls(23,"span",6),rl(24),Du(25,"autoScale"),us(),us(),us(),us()),2&t&&(Gr(1),os("data",e.data.sentHistory),Gr(3),al(Lu(5,8,"common.uploaded")),Gr(4),al(Tu(9,10,e.data.totalSent,ku(24,AH))),Gr(3),al(Tu(12,13,e.data.totalSent,ku(25,IH))),Gr(3),os("data",e.data.receivedHistory),Gr(3),al(Lu(18,16,"common.downloaded")),Gr(4),al(Tu(22,18,e.data.totalReceived,ku(26,AH))),Gr(3),al(Tu(25,21,e.data.totalReceived,ku(27,IH))))},directives:[OH],pipes:[px,gY],styles:[".chart[_ngcontent-%COMP%]{position:relative;margin-bottom:20px}.chart[_ngcontent-%COMP%]:last-child{margin-bottom:10px}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%]{position:absolute;bottom:0;left:0;display:flex;justify-content:space-between;align-items:flex-end;padding:10px;width:100%}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#f8f9f9}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.text[_ngcontent-%COMP%]{font-size:.8rem;text-transform:uppercase;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{font-size:1.25rem;font-weight:700}.chart[_ngcontent-%COMP%] .info[_ngcontent-%COMP%] span.rate[_ngcontent-%COMP%] .unit[_ngcontent-%COMP%]{font-size:.8rem;padding-left:5px}"]}),t}(),FH=function(t){return{time:t}};function RH(t,e){if(1&t&&(ls(0,"mat-icon",13),Du(1,"translate"),rl(2," info "),us()),2&t){var n=Ms(2);os("inline",!0)("matTooltip",Tu(1,2,"node.details.node-info.time.minutes",wu(5,FH,n.timeOnline.totalMinutes)))}}function NH(t,e){1&t&&(ds(0),cs(1,"i",15),rl(2),Du(3,"translate"),hs()),2&t&&(Gr(2),ol(" ",Lu(3,1,"common.ok")," "))}function HH(t,e){if(1&t&&(ds(0),cs(1,"i",16),rl(2),Du(3,"translate"),hs()),2&t){var n=Ms().$implicit;Gr(2),ol(" ",n.originalValue?n.originalValue:Lu(3,1,"node.details.node-health.element-offline")," ")}}function jH(t,e){if(1&t&&(ls(0,"span",4),ls(1,"span",5),rl(2),Du(3,"translate"),us(),ns(4,NH,4,3,"ng-container",14),ns(5,HH,4,3,"ng-container",14),us()),2&t){var n=e.$implicit;Gr(2),al(Lu(3,3,n.name)),Gr(2),os("ngIf",n.isOk),Gr(1),os("ngIf",!n.isOk)}}function BH(t,e){if(1&t){var n=ps();ls(0,"div",1),ls(1,"div",2),ls(2,"span",3),rl(3),Du(4,"translate"),us(),ls(5,"span",4),ls(6,"span",5),rl(7),Du(8,"translate"),us(),ls(9,"span",6),vs("click",(function(){return Cn(n),Ms().showEditLabelDialog()})),rl(10),ls(11,"mat-icon",7),rl(12,"edit"),us(),us(),us(),ls(13,"span",4),ls(14,"span",5),rl(15),Du(16,"translate"),us(),cs(17,"app-copy-to-clipboard-text",8),us(),ls(18,"span",4),ls(19,"span",5),rl(20),Du(21,"translate"),us(),cs(22,"app-copy-to-clipboard-text",8),us(),ls(23,"span",4),ls(24,"span",5),rl(25),Du(26,"translate"),us(),cs(27,"app-copy-to-clipboard-text",8),us(),ls(28,"span",4),ls(29,"span",5),rl(30),Du(31,"translate"),us(),rl(32),Du(33,"translate"),us(),ls(34,"span",4),ls(35,"span",5),rl(36),Du(37,"translate"),us(),rl(38),Du(39,"translate"),us(),ls(40,"span",4),ls(41,"span",5),rl(42),Du(43,"translate"),us(),rl(44),Du(45,"translate"),ns(46,RH,3,7,"mat-icon",9),us(),us(),cs(47,"div",10),ls(48,"div",2),ls(49,"span",3),rl(50),Du(51,"translate"),us(),ns(52,jH,6,5,"span",11),us(),cs(53,"div",10),ls(54,"div",2),ls(55,"span",3),rl(56),Du(57,"translate"),us(),cs(58,"app-charts",12),us(),us()}if(2&t){var i=Ms();Gr(3),al(Lu(4,20,"node.details.node-info.title")),Gr(4),al(Lu(8,22,"node.details.node-info.label")),Gr(3),ol(" ",i.node.label," "),Gr(1),os("inline",!0),Gr(4),ol("",Lu(16,24,"node.details.node-info.public-key"),"\xa0"),Gr(2),Ds("text",i.node.localPk),Gr(3),ol("",Lu(21,26,"node.details.node-info.port"),"\xa0"),Gr(2),Ds("text",i.node.port),Gr(3),ol("",Lu(26,28,"node.details.node-info.dmsg-server"),"\xa0"),Gr(2),Ds("text",i.node.dmsgServerPk),Gr(3),ol("",Lu(31,30,"node.details.node-info.ping"),"\xa0"),Gr(2),ol(" ",Tu(33,32,"common.time-in-ms",wu(48,FH,i.node.roundTripPing))," "),Gr(4),al(Lu(37,35,"node.details.node-info.node-version")),Gr(2),ol(" ",i.node.version?i.node.version:Lu(39,37,"common.unknown")," "),Gr(4),al(Lu(43,39,"node.details.node-info.time.title")),Gr(2),ol(" ",Tu(45,41,"node.details.node-info.time."+i.timeOnline.translationVarName,wu(50,FH,i.timeOnline.elapsedTime))," "),Gr(2),os("ngIf",i.timeOnline.totalMinutes>60),Gr(4),al(Lu(51,44,"node.details.node-health.title")),Gr(2),os("ngForOf",i.nodeHealthInfo.services),Gr(4),al(Lu(57,46,"node.details.node-traffic-data"))}}var VH,zH,WH,UH=function(){function t(t,e,n){this.dialog=t,this.storageService=e,this.nodeService=n}return Object.defineProperty(t.prototype,"nodeInfo",{set:function(t){this.node=t,this.nodeHealthInfo=this.nodeService.getHealthStatus(t),this.timeOnline=yO.getElapsedTime(t.secondsOnline)},enumerable:!1,configurable:!0}),t.prototype.showEditLabelDialog=function(){var t=this.storageService.getLabelInfo(this.node.localPk);t||(t={id:this.node.localPk,label:"",identifiedElementType:Gb.Node}),mE.openDialog(this.dialog,t).afterClosed().subscribe((function(t){t&&uI.refreshCurrentDisplayedData()}))},t.\u0275fac=function(e){return new(e||t)(rs(jx),rs(Kb),rs(fE))},t.\u0275cmp=Fe({type:t,selectors:[["app-node-info-content"]],inputs:{nodeInfo:"nodeInfo"},decls:1,vars:1,consts:[["class","font-smaller d-flex flex-column mt-4.5",4,"ngIf"],[1,"font-smaller","d-flex","flex-column","mt-4.5"],[1,"d-flex","flex-column"],[1,"section-title"],[1,"info-line"],[1,"title"],[1,"highlight-internal-icon",3,"click"],[3,"inline"],[3,"text"],[3,"inline","matTooltip",4,"ngIf"],[1,"separator"],["class","info-line",4,"ngFor","ngForOf"],[1,"d-flex","flex-column","justify-content-end","mt-3"],[3,"inline","matTooltip"],[4,"ngIf"],[1,"dot-green"],[1,"dot-red"]],template:function(t,e){1&t&&ns(0,BH,59,52,"div",0),2&t&&os("ngIf",e.node)},directives:[wh,US,TH,bh,YH,jL],pipes:[px],styles:[".section-title[_ngcontent-%COMP%]{font-size:1rem;font-weight:700;text-transform:uppercase}.info-line[_ngcontent-%COMP%]{word-break:break-all;margin-top:7px}.info-line[_ngcontent-%COMP%] mat-icon[_ngcontent-%COMP%]{position:relative;top:2px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.info-line[_ngcontent-%COMP%] i[_ngcontent-%COMP%]{margin-left:7px}.info-line[_ngcontent-%COMP%] .title[_ngcontent-%COMP%]{opacity:.75}.separator[_ngcontent-%COMP%]{width:100%;height:0;margin:1rem 0;border-top:1px solid hsla(0,0%,100%,.15)}"]}),t}(),qH=function(){function t(){}return t.prototype.ngOnInit=function(){var t=this;this.dataSubscription=uI.currentNode.subscribe((function(e){t.node=e}))},t.prototype.ngOnDestroy=function(){this.dataSubscription.unsubscribe()},t.\u0275fac=function(e){return new(e||t)},t.\u0275cmp=Fe({type:t,selectors:[["app-node-info"]],decls:1,vars:1,consts:[[3,"nodeInfo"]],template:function(t,e){1&t&&cs(0,"app-node-info-content",0),2&t&&os("nodeInfo",e.node)},directives:[UH],styles:[""]}),t}(),GH=function(){return["settings.title","labels.title"]},KH=function(){function t(t){this.router=t,this.tabsData=[],this.returnButtonText="settings.title",this.tabsData=[{icon:"view_headline",label:"labels.list-title",linkParts:[]}]}return t.prototype.performAction=function(t){null===t&&this.router.navigate(["settings"])},t.\u0275fac=function(e){return new(e||t)(rs(ub))},t.\u0275cmp=Fe({type:t,selectors:[["app-all-labels"]],decls:5,vars:6,consts:[[1,"row"],[1,"col-12"],[3,"titleParts","tabsData","showUpdateButton","returnText","optionSelected"],[1,"content","col-12"],[3,"showShortList"]],template:function(t,e){1&t&&(ls(0,"div",0),ls(1,"div",1),ls(2,"app-top-bar",2),vs("optionSelected",(function(t){return e.performAction(t)})),us(),us(),ls(3,"div",3),cs(4,"app-label-list",4),us(),us()),2&t&&(Gr(2),os("titleParts",ku(5,GH))("tabsData",e.tabsData)("showUpdateButton",!1)("returnText",e.returnButtonText),Gr(2),os("showShortList",!1))},directives:[qO,eY],styles:[""]}),t}(),JH=[{path:"",component:vC},{path:"login",component:QT},{path:"nodes",canActivate:[nC],canActivateChild:[nC],children:[{path:"",redirectTo:"list/1",pathMatch:"full"},{path:"list",redirectTo:"list/1",pathMatch:"full"},{path:"list/:page",component:$A},{path:"dmsg",redirectTo:"dmsg/1",pathMatch:"full"},{path:"dmsg/:page",component:$A},{path:":key",component:uI,children:[{path:"",redirectTo:"routing",pathMatch:"full"},{path:"info",component:qH},{path:"routing",component:RF},{path:"apps",component:yH},{path:"transports",redirectTo:"transports/1",pathMatch:"full"},{path:"transports/:page",component:kH},{path:"routes",redirectTo:"routes/1",pathMatch:"full"},{path:"routes/:page",component:MH},{path:"apps-list",redirectTo:"apps-list/1",pathMatch:"full"},{path:"apps-list/:page",component:xH}]}]},{path:"settings",canActivate:[nC],canActivateChild:[nC],children:[{path:"",component:sY},{path:"labels",redirectTo:"labels/1",pathMatch:"full"},{path:"labels/:page",component:KH}]},{path:"**",redirectTo:""}],ZH=function(){function t(){}return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[Cb.forRoot(JH,{useHash:!0})],Cb]}),t}(),$H=function(){function t(){}return t.prototype.getTranslation=function(t){return ot(n("5ey7")("./"+t+".json"))},t}(),QH=function(){function t(){}return t.\u0275mod=je({type:t}),t.\u0275inj=At({factory:function(e){return new(e||t)},imports:[[mx.forRoot({loader:{provide:KS,useClass:$H}})],mx]}),t}(),XH=function(){function t(){}return t.prototype.shouldDetach=function(t){return!1},t.prototype.store=function(t,e){},t.prototype.shouldAttach=function(t){return!1},t.prototype.retrieve=function(t){return null},t.prototype.shouldReuseRoute=function(t,e){return!1},t.\u0275prov=Ot({token:t,factory:t.\u0275fac=function(e){return new(e||t)}}),t}(),tj={disabled:!0},ej=function(){function t(){}return t.\u0275mod=je({type:t,bootstrap:[Kx]}),t.\u0275inj=At({factory:function(e){return new(e||t)},providers:[LE,{provide:LS,useValue:{duration:3e3,verticalPosition:"top"}},{provide:Rx,useValue:{width:"600px",hasBackdrop:!0}},{provide:EM,useClass:TM},{provide:Ky,useClass:XH},{provide:HM,useValue:tj}],imports:[[Rf,fg,gL,$g,ZH,QH,DS,Gx,CT,HT,sN,cS,qS,VL,gO,mL,SP,cP,pC,CI]]}),t}();VH=[vh,_h,bh,wh,Oh,Ph,Ch,Dh,Lh,Th,Eh,jD,iD,sD,MC,WC,JC,bC,nD,oD,GC,EC,PC,eL,sL,uL,dL,nL,aL,zD,UD,QD,GD,JD,mb,db,hb,pb,Zy,fx,CS,Fk,Ox,Vx,zx,Wx,Ux,lT,xT,pT,mT,gT,_T,bT,TT,ET,NT,OT,JR,YR,HR,iN,oN,AR,lS,uS,US,jL,BL,jk,cO,rO,pO,eO,HD,FD,PD,wP,uP,lP,QM,GM,hC,fC,kI,MI,Kx,vC,QT,$A,uI,UF,JY,_H,TH,sY,qT,CH,AL,mE,xL,OH,YH,FF,RF,yH,mY,tI,nF,dI,gC,LO,LI,kH,MH,xH,lA,qO,ME,vY,jF,bx,GT,JT,$T,AE,UH,qH,DE,KF,zN,mP,BE,KH,eY,JP,iY,tR,cR,hR],zH=[Rh,Bh,Nh,qh,nf,Zh,$h,jh,Qh,Vh,Wh,Uh,Kh,px,gY],(WH=uI.\u0275cmp).directiveDefs=function(){return VH.map(Re)},WH.pipeDefs=function(){return zH.map(Ne)},function(){if(nr)throw new Error("Cannot enable prod mode after platform setup.");er=!1}(),Yf().bootstrapModule(ej).catch((function(t){return console.log(t)}))},zx6S:function(t,e,n){!function(t){"use strict";var e={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(t,e){return 1===t?e[0]:t>=2&&t<=4?e[1]:e[2]},translate:function(t,n,i){var r=e.words[i];return 1===i.length?n?r[0]:r[1]:t+" "+e.correctGrammaticalCase(t,r)}};t.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:e.translate,m:e.translate,mm:e.translate,h:e.translate,hh:e.translate,d:"dan",dd:e.translate,M:"mesec",MM:e.translate,y:"godinu",yy:e.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}})}(n("wd/R"))}},[[0,0]]]); \ No newline at end of file diff --git a/cmd/skywire-visor/static/polyfills-es5.0dd9564c0b13020b755a.js b/cmd/skywire-visor/static/polyfills-es5.0dd9564c0b13020b755a.js new file mode 100644 index 0000000000..c08870e623 --- /dev/null +++ b/cmd/skywire-visor/static/polyfills-es5.0dd9564c0b13020b755a.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{"+5Eg":function(t,e,n){var r=n("wA6s"),o=n("6XUM"),i=n("M7Xk").onFreeze,a=n("cZY6"),c=n("rG8t"),u=Object.seal;r({target:"Object",stat:!0,forced:c((function(){u(1)})),sham:!a},{seal:function(t){return u&&o(t)?u(i(t)):t}})},"+IJR":function(t,e,n){n("wA6s")({target:"Number",stat:!0},{isNaN:function(t){return t!=t}})},"+rLv":function(t,e,n){var r=n("dyZX").document;t.exports=r&&r.documentElement},"/AsP":function(t,e,n){var r=n("yIiL"),o=n("SDMg"),i=r("keys");t.exports=function(t){return i[t]||(i[t]=o(t))}},"/Ybd":function(t,e,n){var r=n("T69T"),o=n("XdSI"),i=n("F26l"),a=n("LdO1"),c=Object.defineProperty;e.f=r?c:function(t,e,n){if(i(t),e=a(e,!0),i(n),o)try{return c(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(t[e]=n.value),t}},"0/R4":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"0Ds2":function(t,e,n){var r=n("m41k")("match");t.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[r]=!1,"/./"[t](e)}catch(o){}}return!1}},"0TWp":function(t,e,n){var r,o;void 0===(o="function"==typeof(r=function(){"use strict";!function(t){var e=t.performance;function n(t){e&&e.mark&&e.mark(t)}function r(t,n){e&&e.measure&&e.measure(t,n)}n("Zone");var o=t.__Zone_symbol_prefix||"__zone_symbol__";function i(t){return o+t}var a=!0===t[i("forceDuplicateZoneCheck")];if(t.Zone){if(a||"function"!=typeof t.Zone.__symbol__)throw new Error("Zone already loaded.");return t.Zone}var c=function(){function e(t,e){this._parent=t,this._name=e?e.name||"unnamed":"",this._properties=e&&e.properties||{},this._zoneDelegate=new f(this,this._parent&&this._parent._zoneDelegate,e)}return e.assertZonePatched=function(){if(t.Promise!==j.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")},Object.defineProperty(e,"root",{get:function(){for(var t=e.current;t.parent;)t=t.parent;return t},enumerable:!0,configurable:!0}),Object.defineProperty(e,"current",{get:function(){return P.zone},enumerable:!0,configurable:!0}),Object.defineProperty(e,"currentTask",{get:function(){return I},enumerable:!0,configurable:!0}),e.__load_patch=function(o,i){if(j.hasOwnProperty(o)){if(a)throw Error("Already loaded patch: "+o)}else if(!t["__Zone_disable_"+o]){var c="Zone:"+o;n(c),j[o]=i(t,e,M),r(c,c)}},Object.defineProperty(e.prototype,"parent",{get:function(){return this._parent},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this._name},enumerable:!0,configurable:!0}),e.prototype.get=function(t){var e=this.getZoneWith(t);if(e)return e._properties[t]},e.prototype.getZoneWith=function(t){for(var e=this;e;){if(e._properties.hasOwnProperty(t))return e;e=e._parent}return null},e.prototype.fork=function(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)},e.prototype.wrap=function(t,e){if("function"!=typeof t)throw new Error("Expecting function got: "+t);var n=this._zoneDelegate.intercept(this,t,e),r=this;return function(){return r.runGuarded(n,this,arguments,e)}},e.prototype.run=function(t,e,n,r){P={parent:P,zone:this};try{return this._zoneDelegate.invoke(this,t,e,n,r)}finally{P=P.parent}},e.prototype.runGuarded=function(t,e,n,r){void 0===e&&(e=null),P={parent:P,zone:this};try{try{return this._zoneDelegate.invoke(this,t,e,n,r)}catch(o){if(this._zoneDelegate.handleError(this,o))throw o}}finally{P=P.parent}},e.prototype.runTask=function(t,e,n){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||b).name+"; Execution: "+this.name+")");if(t.state!==w||t.type!==A&&t.type!==T){var r=t.state!=E;r&&t._transitionTo(E,x),t.runCount++;var o=I;I=t,P={parent:P,zone:this};try{t.type==T&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,e,n)}catch(i){if(this._zoneDelegate.handleError(this,i))throw i}}finally{t.state!==w&&t.state!==S&&(t.type==A||t.data&&t.data.isPeriodic?r&&t._transitionTo(x,E):(t.runCount=0,this._updateTaskCount(t,-1),r&&t._transitionTo(w,E,w))),P=P.parent,I=o}}},e.prototype.scheduleTask=function(t){if(t.zone&&t.zone!==this)for(var e=this;e;){if(e===t.zone)throw Error("can not reschedule task to "+this.name+" which is descendants of the original zone "+t.zone.name);e=e.parent}t._transitionTo(k,w);var n=[];t._zoneDelegates=n,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(r){throw t._transitionTo(S,k,w),this._zoneDelegate.handleError(this,r),r}return t._zoneDelegates===n&&this._updateTaskCount(t,1),t.state==k&&t._transitionTo(x,k),t},e.prototype.scheduleMicroTask=function(t,e,n,r){return this.scheduleTask(new l(O,t,e,n,r,void 0))},e.prototype.scheduleMacroTask=function(t,e,n,r,o){return this.scheduleTask(new l(T,t,e,n,r,o))},e.prototype.scheduleEventTask=function(t,e,n,r,o){return this.scheduleTask(new l(A,t,e,n,r,o))},e.prototype.cancelTask=function(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||b).name+"; Execution: "+this.name+")");t._transitionTo(_,x,E);try{this._zoneDelegate.cancelTask(this,t)}catch(e){throw t._transitionTo(S,_),this._zoneDelegate.handleError(this,e),e}return this._updateTaskCount(t,-1),t._transitionTo(w,_),t.runCount=0,t},e.prototype._updateTaskCount=function(t,e){var n=t._zoneDelegates;-1==e&&(t._zoneDelegates=null);for(var r=0;r0,macroTask:n.macroTask>0,eventTask:n.eventTask>0,change:t})},t}(),l=function(){function e(n,r,o,i,a,c){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=n,this.source=r,this.data=i,this.scheduleFn=a,this.cancelFn=c,!o)throw new Error("callback is not defined");this.callback=o;var u=this;this.invoke=n===A&&i&&i.useG?e.invokeTask:function(){return e.invokeTask.call(t,u,this,arguments)}}return e.invokeTask=function(t,e,n){t||(t=this),C++;try{return t.runCount++,t.zone.runTask(t,e,n)}finally{1==C&&m(),C--}},Object.defineProperty(e.prototype,"zone",{get:function(){return this._zone},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this._state},enumerable:!0,configurable:!0}),e.prototype.cancelScheduleRequest=function(){this._transitionTo(w,k)},e.prototype._transitionTo=function(t,e,n){if(this._state!==e&&this._state!==n)throw new Error(this.type+" '"+this.source+"': can not transition to '"+t+"', expecting state '"+e+"'"+(n?" or '"+n+"'":"")+", was '"+this._state+"'.");this._state=t,t==w&&(this._zoneDelegates=null)},e.prototype.toString=function(){return this.data&&void 0!==this.data.handleId?this.data.handleId.toString():Object.prototype.toString.call(this)},e.prototype.toJSON=function(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}},e}(),p=i("setTimeout"),h=i("Promise"),v=i("then"),d=[],g=!1;function y(e){if(0===C&&0===d.length)if(u||t[h]&&(u=t[h].resolve(0)),u){var n=u[v];n||(n=u.then),n.call(u,m)}else t[p](m,0);e&&d.push(e)}function m(){if(!g){for(g=!0;d.length;){var t=d;d=[];for(var e=0;e=0;n--)"function"==typeof t[n]&&(t[n]=u(t[n],e+"_"+n));return t}function g(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&void 0===t.set)}var y="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope,m=!("nw"in h)&&void 0!==h.process&&"[object process]"==={}.toString.call(h.process),b=!m&&!y&&!(!l||!p.HTMLElement),w=void 0!==h.process&&"[object process]"==={}.toString.call(h.process)&&!y&&!(!l||!p.HTMLElement),k={},x=function(t){if(t=t||h.event){var e=k[t.type];e||(e=k[t.type]=f("ON_PROPERTY"+t.type));var n,r=this||t.target||h,o=r[e];if(b&&r===p&&"error"===t.type){var i=t;!0===(n=o&&o.call(this,i.message,i.filename,i.lineno,i.colno,i.error))&&t.preventDefault()}else null==(n=o&&o.apply(this,arguments))||n||t.preventDefault();return n}};function E(n,r,o){var i=t(n,r);if(!i&&o&&t(o,r)&&(i={enumerable:!0,configurable:!0}),i&&i.configurable){var a=f("on"+r+"patched");if(!n.hasOwnProperty(a)||!n[a]){delete i.writable,delete i.value;var c=i.get,u=i.set,s=r.substr(2),l=k[s];l||(l=k[s]=f("ON_PROPERTY"+s)),i.set=function(t){var e=this;e||n!==h||(e=h),e&&(e[l]&&e.removeEventListener(s,x),u&&u.apply(e,v),"function"==typeof t?(e[l]=t,e.addEventListener(s,x,!1)):e[l]=null)},i.get=function(){var t=this;if(t||n!==h||(t=h),!t)return null;var e=t[l];if(e)return e;if(c){var o=c&&c.call(this);if(o)return i.set.call(this,o),"function"==typeof t.removeAttribute&&t.removeAttribute(r),o}return null},e(n,r,i),n[a]=!0}}}function _(t,e,n){if(e)for(var r=0;r=0&&"function"==typeof r[i.cbIdx]?s(i.name,r[i.cbIdx],i,o):t.apply(e,r)}}))}function j(t,e){t[f("OriginalDelegate")]=e}var M=!1,P=!1;function I(){try{var t=p.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch(e){}return!1}function C(){if(M)return P;M=!0;try{var t=p.navigator.userAgent;-1===t.indexOf("MSIE ")&&-1===t.indexOf("Trident/")&&-1===t.indexOf("Edge/")||(P=!0)}catch(e){}return P}Zone.__load_patch("toString",(function(t){var e=Function.prototype.toString,n=f("OriginalDelegate"),r=f("Promise"),o=f("Error"),i=function(){if("function"==typeof this){var i=this[n];if(i)return"function"==typeof i?e.call(i):Object.prototype.toString.call(i);if(this===Promise){var a=t[r];if(a)return e.call(a)}if(this===Error){var c=t[o];if(c)return e.call(c)}}return e.call(this)};i[n]=e,Function.prototype.toString=i;var a=Object.prototype.toString;Object.prototype.toString=function(){return this instanceof Promise?"[object Promise]":a.call(this)}}));var D=!1;if("undefined"!=typeof window)try{var R=Object.defineProperty({},"passive",{get:function(){D=!0}});window.addEventListener("test",R,R),window.removeEventListener("test",R,R)}catch(wt){D=!1}var N={useG:!0},L={},Z={},F=new RegExp("^"+c+"(\\w+)(true|false)$"),z=f("propagationStopped");function G(t,e){var n=(e?e(t):t)+"false",r=(e?e(t):t)+"true",o=c+n,i=c+r;L[t]={},L[t].false=o,L[t].true=i}function q(t,e,r){var o=r&&r.add||"addEventListener",i=r&&r.rm||"removeEventListener",a=r&&r.listeners||"eventListeners",u=r&&r.rmAll||"removeAllListeners",s=f(o),l="."+o+":",p=function(t,e,n){if(!t.isRemoved){var r=t.callback;"object"==typeof r&&r.handleEvent&&(t.callback=function(t){return r.handleEvent(t)},t.originalDelegate=r),t.invoke(t,e,[n]);var o=t.options;o&&"object"==typeof o&&o.once&&e[i].call(e,n.type,t.originalDelegate?t.originalDelegate:t.callback,o)}},h=function(e){if(e=e||t.event){var n=this||e.target||t,r=n[L[e.type].false];if(r)if(1===r.length)p(r[0],n,e);else for(var o=r.slice(),i=0;i1?new i(e,n):new i(e),s=t.ObjectGetOwnPropertyDescriptor(u,"onmessage");return s&&!1===s.configurable?(a=t.ObjectCreate(u),c=u,[r,o,"send","close"].forEach((function(e){a[e]=function(){var n=t.ArraySlice.call(arguments);if(e===r||e===o){var i=n.length>0?n[0]:void 0;if(i){var c=Zone.__symbol__("ON_PROPERTY"+i);u[c]=a[c]}}return u[e].apply(u,n)}}))):a=u,t.patchOnProperties(a,["close","error","message","open"],c),a};var a=e.WebSocket;for(var c in i)a[c]=i[c]}(t,e),Zone[t.symbol("patchEvents")]=!0}}Zone.__load_patch("util",(function(n,i,a){a.patchOnProperties=_,a.patchMethod=T,a.bindArguments=d,a.patchMacroTask=A;var s=i.__symbol__("BLACK_LISTED_EVENTS"),f=i.__symbol__("UNPATCHED_EVENTS");n[f]&&(n[s]=n[f]),n[s]&&(i[s]=i[f]=n[s]),a.patchEventPrototype=U,a.patchEventTarget=q,a.isIEOrEdge=C,a.ObjectDefineProperty=e,a.ObjectGetOwnPropertyDescriptor=t,a.ObjectCreate=r,a.ArraySlice=o,a.patchClass=O,a.wrapWithCurrentZone=u,a.filterProperties=ct,a.attachOriginToPatched=j,a._redefineProperty=Object.defineProperty,a.patchCallbacks=Y,a.getGlobalObjects=function(){return{globalSources:Z,zoneSymbolEventNames:L,eventNames:at,isBrowser:b,isMix:w,isNode:m,TRUE_STR:"true",FALSE_STR:"false",ZONE_SYMBOL_PREFIX:c,ADD_EVENT_LISTENER_STR:"addEventListener",REMOVE_EVENT_LISTENER_STR:"removeEventListener"}}})),function(t){t[(t.__Zone_symbol_prefix||"__zone_symbol__")+"legacyPatch"]=function(){var e=t.Zone;e.__load_patch("defineProperty",(function(t,e,n){n._redefineProperty=lt,ft()})),e.__load_patch("registerElement",(function(t,e,n){!function(t,e){var n=e.getGlobalObjects();(n.isBrowser||n.isMix)&&"registerElement"in t.document&&e.patchCallbacks(e,document,"Document","registerElement",["createdCallback","attachedCallback","detachedCallback","attributeChangedCallback"])}(t,n)})),e.__load_patch("EventTargetLegacy",(function(t,e,n){dt(t,n),gt(n,t)}))}}("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{});var yt=f("zoneTask");function mt(t,e,n,r){var o=null,i=null;n+=r;var a={};function c(e){var n=e.data;return n.args[0]=function(){try{e.invoke.apply(this,arguments)}finally{e.data&&e.data.isPeriodic||("number"==typeof n.handleId?delete a[n.handleId]:n.handleId&&(n.handleId[yt]=null))}},n.handleId=o.apply(t,n.args),e}function u(t){return i(t.data.handleId)}o=T(t,e+=r,(function(n){return function(o,i){if("function"==typeof i[0]){var f=s(e,i[0],{isPeriodic:"Interval"===r,delay:"Timeout"===r||"Interval"===r?i[1]||0:void 0,args:i},c,u);if(!f)return f;var l=f.data.handleId;return"number"==typeof l?a[l]=f:l&&(l[yt]=f),l&&l.ref&&l.unref&&"function"==typeof l.ref&&"function"==typeof l.unref&&(f.ref=l.ref.bind(l),f.unref=l.unref.bind(l)),"number"==typeof l||l?l:f}return n.apply(t,i)}})),i=T(t,n,(function(e){return function(n,r){var o,i=r[0];"number"==typeof i?o=a[i]:(o=i&&i[yt])||(o=i),o&&"string"==typeof o.type?"notScheduled"!==o.state&&(o.cancelFn&&o.data.isPeriodic||0===o.runCount)&&("number"==typeof i?delete a[i]:i&&(i[yt]=null),o.zone.cancelTask(o)):e.apply(t,r)}}))}function bt(t,e){if(!Zone[e.symbol("patchEventTarget")]){for(var n=e.getGlobalObjects(),r=n.eventNames,o=n.zoneSymbolEventNames,i=n.TRUE_STR,a=n.FALSE_STR,c=n.ZONE_SYMBOL_PREFIX,u=0;u0){var o=t.invoke;t.invoke=function(){for(var n=u[e.__symbol__("loadfalse")],i=0;i"+t+"<\/script>"},h=function(){try{r=document.domain&&new ActiveXObject("htmlfile")}catch(o){}var t,e;h=r?function(t){t.write(p("")),t.close();var e=t.parentWindow.Object;return t=null,e}(r):((e=s("iframe")).style.display="none",u.appendChild(e),e.src=String("javascript:"),(t=e.contentWindow.document).open(),t.write(p("document.F=Object")),t.close(),t.F);for(var n=a.length;n--;)delete h.prototype[a[n]];return h()};c[f]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(l.prototype=o(t),n=new l,l.prototype=null,n[f]=t):n=h(),void 0===e?n:i(n,e)}},"3Lyj":function(t,e,n){var r=n("KroJ");t.exports=function(t,e,n){for(var o in e)r(t,o,e[o],n);return t}},"3caY":function(t,e,n){var r=n("wA6s"),o=Math.asinh,i=Math.log,a=Math.sqrt;r({target:"Math",stat:!0,forced:!(o&&1/o(0)>0)},{asinh:function t(e){return isFinite(e=+e)&&0!=e?e<0?-t(-e):i(e+a(e*e+1)):e}})},"3vMK":function(t,e,n){"use strict";var r=n("6XUM"),o=n("/Ybd"),i=n("wIVT"),a=n("m41k")("hasInstance"),c=Function.prototype;a in c||o.f(c,a,{value:function(t){if("function"!=typeof this||!r(t))return!1;if(!r(this.prototype))return t instanceof this;for(;t=i(t);)if(this.prototype===t)return!0;return!1}})},"3xQm":function(t,e,n){var r,o,i,a,c,u,s,f,l=n("ocAm"),p=n("7gGY").f,h=n("ezU2"),v=n("Ox9q").set,d=n("tuHh"),g=l.MutationObserver||l.WebKitMutationObserver,y=l.process,m=l.Promise,b="process"==h(y),w=p(l,"queueMicrotask"),k=w&&w.value;k||(r=function(){var t,e;for(b&&(t=y.domain)&&t.exit();o;){e=o.fn,o=o.next;try{e()}catch(n){throw o?a():i=void 0,n}}i=void 0,t&&t.enter()},b?a=function(){y.nextTick(r)}:g&&!d?(c=!0,u=document.createTextNode(""),new g(r).observe(u,{characterData:!0}),a=function(){u.data=c=!c}):m&&m.resolve?(s=m.resolve(void 0),f=s.then,a=function(){f.call(s,r)}):a=function(){v.call(l,r)}),t.exports=k||function(t){var e={fn:t,next:void 0};i&&(i.next=e),o||(o=e,a()),i=e}},"45Tv":function(t,e,n){var r=n("N6cJ"),o=n("y3w9"),i=n("OP3Y"),a=r.has,c=r.get,u=r.key,s=function(t,e,n){if(a(t,e,n))return c(t,e,n);var r=i(e);return null!==r?s(t,r,n):void 0};r.exp({getMetadata:function(t,e){return s(t,o(e),arguments.length<3?void 0:u(arguments[2]))}})},"48xZ":function(t,e,n){var r=n("n/2t"),o=Math.abs,i=Math.pow,a=i(2,-52),c=i(2,-23),u=i(2,127)*(2-c),s=i(2,-126);t.exports=Math.fround||function(t){var e,n,i=o(t),f=r(t);return iu||n!=n?f*(1/0):f*n}},"49D4":function(t,e,n){var r=n("N6cJ"),o=n("y3w9"),i=r.key,a=r.set;r.exp({defineMetadata:function(t,e,n,r){a(t,e,o(n),i(r))}})},"4GtL":function(t,e,n){"use strict";var r=n("VCQ8"),o=n("7Oj1"),i=n("xpLY"),a=Math.min;t.exports=[].copyWithin||function(t,e){var n=r(this),c=i(n.length),u=o(t,c),s=o(e,c),f=arguments.length>2?arguments[2]:void 0,l=a((void 0===f?c:o(f,c))-s,c-u),p=1;for(s0;)s in n?n[u]=n[s]:delete n[u],u+=p,s+=p;return n}},"4Kt7":function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("d8Sw")("sub")},{sub:function(){return o(this,"sub","","")}})},"4LiD":function(t,e,n){"use strict";var r=n("dyZX"),o=n("XKFU"),i=n("KroJ"),a=n("3Lyj"),c=n("Z6vF"),u=n("SlkY"),s=n("9gX7"),f=n("0/R4"),l=n("eeVq"),p=n("XMVh"),h=n("fyDq"),v=n("Xbzi");t.exports=function(t,e,n,d,g,y){var m=r[t],b=m,w=g?"set":"add",k=b&&b.prototype,x={},E=function(t){var e=k[t];i(k,t,"delete"==t||"has"==t?function(t){return!(y&&!f(t))&&e.call(this,0===t?0:t)}:"get"==t?function(t){return y&&!f(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof b&&(y||k.forEach&&!l((function(){(new b).entries().next()})))){var _=new b,S=_[w](y?{}:-0,1)!=_,O=l((function(){_.has(1)})),T=p((function(t){new b(t)})),A=!y&&l((function(){for(var t=new b,e=5;e--;)t[w](e,e);return!t.has(-0)}));T||((b=e((function(e,n){s(e,b,t);var r=v(new m,e,b);return null!=n&&u(n,g,r[w],r),r}))).prototype=k,k.constructor=b),(O||A)&&(E("delete"),E("has"),g&&E("get")),(A||S)&&E(w),y&&k.clear&&delete k.clear}else b=d.getConstructor(e,t,g,w),a(b.prototype,n),c.NEED=!0;return h(b,t),x[t]=b,o(o.G+o.W+o.F*(b!=m),x),y||d.setStrong(b,t,g),b}},"4NCC":function(t,e,n){var r=n("ocAm"),o=n("jnLS").trim,i=n("xFZC"),a=r.parseInt,c=/^[+-]?0[Xx]/,u=8!==a(i+"08")||22!==a(i+"0x16");t.exports=u?function(t,e){var n=o(String(t));return a(n,e>>>0||(c.test(n)?16:10))}:a},"4PyY":function(t,e,n){var r={};r[n("m41k")("toStringTag")]="z",t.exports="[object z]"===String(r)},"4R4u":function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},"4axp":function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("d8Sw")("blink")},{blink:function(){return o(this,"blink","","")}})},"5MmU":function(t,e,n){var r=n("m41k"),o=n("pz+c"),i=r("iterator"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(o.Array===t||a[i]===t)}},"5eAq":function(t,e,n){var r=n("wA6s"),o=n("vZCr");r({target:"Number",stat:!0,forced:Number.parseFloat!=o},{parseFloat:o})},"5y2d":function(t,e,n){var r=n("T69T"),o=n("/Ybd"),i=n("F26l"),a=n("ZRqE");t.exports=r?Object.defineProperties:function(t,e){i(t);for(var n,r=a(e),c=r.length,u=0;c>u;)o.f(t,n=r[u++],e[n]);return t}},"5zDw":function(t,e,n){var r=n("wA6s"),o=n("4NCC");r({target:"Number",stat:!0,forced:Number.parseInt!=o},{parseInt:o})},"6CEi":function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").find,i=n("A1Hp"),a=n("w2hq"),c=!0,u=a("find");"find"in[]&&Array(1).find((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{find:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("find")},"6CJb":function(t,e,n){"use strict";var r=n("rG8t");t.exports=function(t,e){var n=[][t];return!!n&&r((function(){n.call(null,e||function(){throw 1},1)}))}},"6FMO":function(t,e,n){var r=n("0/R4"),o=n("EWmC"),i=n("K0xU")("species");t.exports=function(t){var e;return o(t)&&("function"!=typeof(e=t.constructor)||e!==Array&&!o(e.prototype)||(e=void 0),r(e)&&null===(e=e[i])&&(e=void 0)),void 0===e?Array:e}},"6XUM":function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},"6fhQ":function(t,e,n){"use strict";var r=n("wA6s"),o=n("Neub"),i=n("VCQ8"),a=n("rG8t"),c=n("6CJb"),u=[],s=u.sort,f=a((function(){u.sort(void 0)})),l=a((function(){u.sort(null)})),p=c("sort");r({target:"Array",proto:!0,forced:f||!l||!p},{sort:function(t){return void 0===t?s.call(i(this)):s.call(i(this),o(t))}})},"6lQQ":function(t,e,n){"use strict";var r=n("wA6s"),o=n("OXtp").indexOf,i=n("6CJb"),a=n("w2hq"),c=[].indexOf,u=!!c&&1/[1].indexOf(1,-0)<0,s=i("indexOf"),f=a("indexOf",{ACCESSORS:!0,1:0});r({target:"Array",proto:!0,forced:u||!s||!f},{indexOf:function(t){return u?c.apply(this,arguments)||0:o(this,t,arguments.length>1?arguments[1]:void 0)}})},"6oxo":function(t,e,n){var r=n("wA6s"),o=Math.log,i=Math.LN2;r({target:"Math",stat:!0},{log2:function(t){return o(t)/i}})},"6q6p":function(t,e,n){"use strict";var r=n("wA6s"),o=n("6XUM"),i=n("erNl"),a=n("7Oj1"),c=n("xpLY"),u=n("EMtK"),s=n("DYg9"),f=n("m41k"),l=n("lRyB"),p=n("w2hq"),h=l("slice"),v=p("slice",{ACCESSORS:!0,0:0,1:2}),d=f("species"),g=[].slice,y=Math.max;r({target:"Array",proto:!0,forced:!h||!v},{slice:function(t,e){var n,r,f,l=u(this),p=c(l.length),h=a(t,p),v=a(void 0===e?p:e,p);if(i(l)&&("function"!=typeof(n=l.constructor)||n!==Array&&!i(n.prototype)?o(n)&&null===(n=n[d])&&(n=void 0):n=void 0,n===Array||void 0===n))return g.call(l,h,v);for(r=new(void 0===n?Array:n)(y(v-h,0)),f=0;h=0;)p[e]=s((n+=p[e])/t),n=n%t*1e7},y=function(){for(var t=6,e="";--t>=0;)if(""!==e||0===t||0!==p[t]){var n=String(p[t]);e=""===e?n:e+a.call("0",7-n.length)+n}return e};if(l<0||l>20)throw RangeError("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return String(u);if(u<0&&(h="-",u=-u),u>1e-21)if(n=(e=function(t){for(var e=0,n=t;n>=4096;)e+=12,n/=4096;for(;n>=2;)e+=1,n/=2;return e}(u*f(2,69,1))-69)<0?u*f(2,-e,1):u/f(2,e,1),n*=4503599627370496,(e=52-e)>0){for(d(0,n),r=l;r>=7;)d(1e7,0),r-=7;for(d(f(10,r,1),0),r=e-1;r>=23;)g(1<<23),r-=23;g(1<0?h+((c=v.length)<=l?"0."+a.call("0",l-c)+v:v.slice(0,c-l)+"."+v.slice(c-l)):h+v}})},"8ydS":function(t,e,n){n("wA6s")({target:"Date",stat:!0},{now:function(){return(new Date).getTime()}})},"94Vg":function(t,e,n){var r=n("E7aN"),o=n("OG5q"),i=n("aGCb"),a=n("/Ybd").f;t.exports=function(t){var e=r.Symbol||(r.Symbol={});o(e,t)||a(e,t,{value:i.f(t)})}},"9AAn":function(t,e,n){"use strict";var r=n("wmvG"),o=n("s5qY");t.exports=n("4LiD")("Map",(function(t){return function(){return t(this,arguments.length>0?arguments[0]:void 0)}}),{get:function(t){var e=r.getEntry(o(this,"Map"),t);return e&&e.v},set:function(t,e){return r.def(o(this,"Map"),0===t?0:t,e)}},r,!0)},"9gX7":function(t,e){t.exports=function(t,e,n,r){if(!(t instanceof e)||void 0!==r&&r in t)throw TypeError(n+": incorrect invocation!");return t}},"9kNm":function(t,e,n){n("94Vg")("toPrimitive")},A1Hp:function(t,e,n){var r=n("m41k"),o=n("2RDa"),i=n("/Ybd"),a=r("unscopables"),c=Array.prototype;null==c[a]&&i.f(c,a,{configurable:!0,value:o(null)}),t.exports=function(t){c[a][t]=!0}},A7hN:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("VCQ8"),a=n("wIVT"),c=n("cwa4");r({target:"Object",stat:!0,forced:o((function(){a(1)})),sham:!c},{getPrototypeOf:function(t){return a(i(t))}})},Afnz:function(t,e,n){"use strict";var r=n("LQAc"),o=n("XKFU"),i=n("KroJ"),a=n("Mukb"),c=n("hPIQ"),u=n("QaDb"),s=n("fyDq"),f=n("OP3Y"),l=n("K0xU")("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,v,d,g,y){u(n,e,v);var m,b,w,k=function(t){if(!p&&t in S)return S[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},x=e+" Iterator",E="values"==d,_=!1,S=t.prototype,O=S[l]||S["@@iterator"]||d&&S[d],T=O||k(d),A=d?E?k("entries"):T:void 0,j="Array"==e&&S.entries||O;if(j&&(w=f(j.call(new t)))!==Object.prototype&&w.next&&(s(w,x,!0),r||"function"==typeof w[l]||a(w,l,h)),E&&O&&"values"!==O.name&&(_=!0,T=function(){return O.call(this)}),r&&!y||!p&&!_&&S[l]||a(S,l,T),c[e]=T,c[x]=h,d)if(m={values:E?T:k("values"),keys:g?T:k("keys"),entries:A},y)for(b in m)b in S||i(S,b,m[b]);else o(o.P+o.F*(p||_),e,m);return m}},"Ay+M":function(t,e,n){var r=n("wA6s"),o=n("vZCr");r({global:!0,forced:parseFloat!=o},{parseFloat:o})},BaTD:function(t,e,n){n("wA6s")({target:"String",proto:!0},{repeat:n("EMWV")})},BcWx:function(t,e,n){"use strict";var r=n("wA6s"),o=n("rG8t"),i=n("DYg9");r({target:"Array",stat:!0,forced:o((function(){function t(){}return!(Array.of.call(t)instanceof t)}))},{of:function(){for(var t=0,e=arguments.length,n=new("function"==typeof this?this:Array)(e);e>t;)i(n,t,arguments[t++]);return n.length=e,n}})},BnCb:function(t,e,n){n("wA6s")({target:"Math",stat:!0},{sign:n("n/2t")})},BqfV:function(t,e,n){var r=n("N6cJ"),o=n("y3w9"),i=r.get,a=r.key;r.exp({getOwnMetadata:function(t,e){return i(t,o(e),arguments.length<3?void 0:a(arguments[2]))}})},COcp:function(t,e,n){n("wA6s")({target:"Number",stat:!0},{isInteger:n("Nvxz")})},CW9j:function(t,e,n){"use strict";var r=n("F26l"),o=n("LdO1");t.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return o(r(this),"number"!==t)}},CkkT:function(t,e,n){var r=n("m0Pp"),o=n("Ymqv"),i=n("S/j/"),a=n("ne8i"),c=n("zRwo");t.exports=function(t,e){var n=1==t,u=2==t,s=3==t,f=4==t,l=6==t,p=5==t||l,h=e||c;return function(e,c,v){for(var d,g,y=i(e),m=o(y),b=r(c,v,3),w=a(m.length),k=0,x=n?h(e,w):u?h(e,0):void 0;w>k;k++)if((p||k in m)&&(g=b(d=m[k],k,y),t))if(n)x[k]=g;else if(g)switch(t){case 3:return!0;case 5:return d;case 6:return k;case 2:x.push(d)}else if(f)return!1;return l?-1:s||f?f:x}}},CwIO:function(t,e,n){var r=n("wA6s"),o=Math.hypot,i=Math.abs,a=Math.sqrt;r({target:"Math",stat:!0,forced:!!o&&o(1/0,NaN)!==1/0},{hypot:function(t,e){for(var n,r,o=0,c=0,u=arguments.length,s=0;c0?(r=n/s)*r:n;return s===1/0?1/0:s*a(o)}})},"D+RQ":function(t,e,n){"use strict";var r=n("T69T"),o=n("ocAm"),i=n("MkZA"),a=n("2MGJ"),c=n("OG5q"),u=n("ezU2"),s=n("K6ZX"),f=n("LdO1"),l=n("rG8t"),p=n("2RDa"),h=n("KkqW").f,v=n("7gGY").f,d=n("/Ybd").f,g=n("jnLS").trim,y=o.Number,m=y.prototype,b="Number"==u(p(m)),w=function(t){var e,n,r,o,i,a,c,u,s=f(t,!1);if("string"==typeof s&&s.length>2)if(43===(e=(s=g(s)).charCodeAt(0))||45===e){if(88===(n=s.charCodeAt(2))||120===n)return NaN}else if(48===e){switch(s.charCodeAt(1)){case 66:case 98:r=2,o=49;break;case 79:case 111:r=8,o=55;break;default:return+s}for(a=(i=s.slice(2)).length,c=0;co)return NaN;return parseInt(i,r)}return+s};if(i("Number",!y(" 0o1")||!y("0b1")||y("+0x1"))){for(var k,x=function(t){var e=arguments.length<1?0:t,n=this;return n instanceof x&&(b?l((function(){m.valueOf.call(n)})):"Number"!=u(n))?s(new y(w(e)),n,x):w(e)},E=r?h(y):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),_=0;E.length>_;_++)c(y,k=E[_])&&!c(x,k)&&d(x,k,v(y,k));x.prototype=m,m.constructor=x,a(o,"Number",x)}},D3bo:function(t,e,n){var r,o,i=n("ocAm"),a=n("T/Kj"),c=i.process,u=c&&c.versions,s=u&&u.v8;s?o=(r=s.split("."))[0]+r[1]:a&&(!(r=a.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=a.match(/Chrome\/(\d+)/))&&(o=r[1]),t.exports=o&&+o},D94X:function(t,e,n){var r=n("wA6s"),o=n("n/2t"),i=Math.abs,a=Math.pow;r({target:"Math",stat:!0},{cbrt:function(t){return o(t=+t)*a(i(t),1/3)}})},DAme:function(t,e,n){"use strict";var r=n("8aNu"),o=n("M7Xk").getWeakData,i=n("F26l"),a=n("6XUM"),c=n("SM6+"),u=n("Rn6E"),s=n("kk6e"),f=n("OG5q"),l=n("XH/I"),p=l.set,h=l.getterFor,v=s.find,d=s.findIndex,g=0,y=function(t){return t.frozen||(t.frozen=new m)},m=function(){this.entries=[]},b=function(t,e){return v(t.entries,(function(t){return t[0]===e}))};m.prototype={get:function(t){var e=b(this,t);if(e)return e[1]},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.entries.push([t,e])},delete:function(t){var e=d(this.entries,(function(e){return e[0]===t}));return~e&&this.entries.splice(e,1),!!~e}},t.exports={getConstructor:function(t,e,n,s){var l=t((function(t,r){c(t,l,e),p(t,{type:e,id:g++,frozen:void 0}),null!=r&&u(r,t[s],t,n)})),v=h(e),d=function(t,e,n){var r=v(t),a=o(i(e),!0);return!0===a?y(r).set(e,n):a[r.id]=n,t};return r(l.prototype,{delete:function(t){var e=v(this);if(!a(t))return!1;var n=o(t);return!0===n?y(e).delete(t):n&&f(n,e.id)&&delete n[e.id]},has:function(t){var e=v(this);if(!a(t))return!1;var n=o(t);return!0===n?y(e).has(t):n&&f(n,e.id)}}),r(l.prototype,n?{get:function(t){var e=v(this);if(a(t)){var n=o(t);return!0===n?y(e).get(t):n?n[e.id]:void 0}},set:function(t,e){return d(this,t,e)}}:{add:function(t){return d(this,t,!0)}}),l}}},DGHb:function(t,e,n){"use strict";var r=n("wA6s"),o=n("rG8t"),i=n("VCQ8"),a=n("LdO1");r({target:"Date",proto:!0,forced:o((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(t){var e=i(this),n=a(e);return"number"!=typeof n||isFinite(n)?e.toISOString():null}})},DVgA:function(t,e,n){var r=n("zhAb"),o=n("4R4u");t.exports=Object.keys||function(t){return r(t,o)}},DYg9:function(t,e,n){"use strict";var r=n("LdO1"),o=n("/Ybd"),i=n("uSMZ");t.exports=function(t,e,n){var a=r(e);a in t?o.f(t,a,i(0,n)):t[a]=n}},Djps:function(t,e,n){n("wA6s")({target:"Math",stat:!0},{log1p:n("O3xq")})},DscF:function(t,e,n){var r=n("wA6s"),o=n("w4Hq"),i=n("A1Hp");r({target:"Array",proto:!0},{fill:o}),i("fill")},E7aN:function(t,e,n){var r=n("ocAm");t.exports=r},E8Ab:function(t,e,n){"use strict";var r=n("Neub"),o=n("6XUM"),i=[].slice,a={},c=function(t,e,n){if(!(e in a)){for(var r=[],o=0;o0?arguments[0]:void 0)}},y={get:function(t){if(s(t)){var e=p(t);return!0===e?v(l(this,"WeakMap")).get(t):e?e[this._i]:void 0}},set:function(t,e){return u.def(l(this,"WeakMap"),t,e)}},m=t.exports=n("4LiD")("WeakMap",g,y,u,!0,!0);f((function(){return 7!=(new m).set((Object.freeze||Object)(d),7).get(d)}))&&(c((r=u.getConstructor(g,"WeakMap")).prototype,y),a.NEED=!0,o(["delete","has","get","set"],(function(t){var e=m.prototype,n=e[t];i(e,t,(function(e,o){if(s(e)&&!h(e)){this._f||(this._f=new r);var i=this._f[t](e,o);return"set"==t?this:i}return n.call(this,e,o)}))})))},EMWV:function(t,e,n){"use strict";var r=n("vDBE"),o=n("hmpk");t.exports="".repeat||function(t){var e=String(o(this)),n="",i=r(t);if(i<0||i==1/0)throw RangeError("Wrong number of repetitions");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},EMtK:function(t,e,n){var r=n("tUdv"),o=n("hmpk");t.exports=function(t){return r(o(t))}},EQZg:function(t,e){t.exports=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}},ERXZ:function(t,e,n){n("94Vg")("match")},EWmC:function(t,e,n){var r=n("LZWt");t.exports=Array.isArray||function(t){return"Array"==r(t)}},EemH:function(t,e,n){var r=n("UqcF"),o=n("RjD/"),i=n("aCFj"),a=n("apmT"),c=n("aagx"),u=n("xpql"),s=Object.getOwnPropertyDescriptor;e.f=n("nh4g")?s:function(t,e){if(t=i(t),e=a(e,!0),u)try{return s(t,e)}catch(n){}if(c(t,e))return o(!r.f.call(t,e),t[e])}},EntM:function(t,e,n){var r=n("wA6s"),o=n("T69T");r({target:"Object",stat:!0,forced:!o,sham:!o},{defineProperties:n("5y2d")})},"Ew/G":function(t,e,n){var r=n("E7aN"),o=n("ocAm"),i=function(t){return"function"==typeof t?t:void 0};t.exports=function(t,e){return arguments.length<2?i(r[t])||i(o[t]):r[t]&&r[t][e]||o[t]&&o[t][e]}},"F/TS":function(t,e,n){var r=n("mN5b"),o=n("pz+c"),i=n("m41k")("iterator");t.exports=function(t){if(null!=t)return t[i]||t["@@iterator"]||o[r(t)]}},F26l:function(t,e,n){var r=n("6XUM");t.exports=function(t){if(!r(t))throw TypeError(String(t)+" is not an object");return t}},F4rZ:function(t,e,n){"use strict";var r=n("wA6s"),o=n("rG8t"),i=n("erNl"),a=n("6XUM"),c=n("VCQ8"),u=n("xpLY"),s=n("DYg9"),f=n("JafA"),l=n("lRyB"),p=n("m41k"),h=n("D3bo"),v=p("isConcatSpreadable"),d=h>=51||!o((function(){var t=[];return t[v]=!1,t.concat()[0]!==t})),g=l("concat"),y=function(t){if(!a(t))return!1;var e=t[v];return void 0!==e?!!e:i(t)};r({target:"Array",proto:!0,forced:!d||!g},{concat:function(t){var e,n,r,o,i,a=c(this),l=f(a,0),p=0;for(e=-1,r=arguments.length;e9007199254740991)throw TypeError("Maximum allowed index exceeded");for(n=0;n=9007199254740991)throw TypeError("Maximum allowed index exceeded");s(l,p++,i)}return l.length=p,l}})},FJW5:function(t,e,n){var r=n("hswa"),o=n("y3w9"),i=n("DVgA");t.exports=n("nh4g")?Object.defineProperties:function(t,e){o(t);for(var n,a=i(e),c=a.length,u=0;c>u;)r.f(t,n=a[u++],e[n]);return t}},FU1i:function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").map,i=n("lRyB"),a=n("w2hq"),c=i("map"),u=a("map");r({target:"Array",proto:!0,forced:!c||!u},{map:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},FZcq:function(t,e,n){n("49D4"),n("zq+C"),n("45Tv"),n("uAtd"),n("BqfV"),n("fN/3"),n("iW+S"),n("7Dlh"),n("Opxb"),t.exports=n("g3g5").Reflect},"FeI/":function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").every,i=n("6CJb"),a=n("w2hq"),c=i("every"),u=a("every");r({target:"Array",proto:!0,forced:!c||!u},{every:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}})},Fqhe:function(t,e,n){var r=n("ocAm"),o=n("aJMj");t.exports=function(t,e){try{o(r,t,e)}catch(n){r[t]=e}return e}},G1Vw:function(t,e,n){"use strict";var r,o,i,a=n("wIVT"),c=n("aJMj"),u=n("OG5q"),s=n("m41k"),f=n("g9hI"),l=s("iterator"),p=!1;[].keys&&("next"in(i=[].keys())?(o=a(a(i)))!==Object.prototype&&(r=o):p=!0),null==r&&(r={}),f||u(r,l)||c(r,l,(function(){return this})),t.exports={IteratorPrototype:r,BUGGY_SAFARI_ITERATORS:p}},G7bs:function(t,e,n){var r=n("vDBE"),o=n("hmpk"),i=function(t){return function(e,n){var i,a,c=String(o(e)),u=r(n),s=c.length;return u<0||u>=s?t?"":void 0:(i=c.charCodeAt(u))<55296||i>56319||u+1===s||(a=c.charCodeAt(u+1))<56320||a>57343?t?c.charAt(u):i:t?c.slice(u,u+2):a-56320+(i-55296<<10)+65536}};t.exports={codeAt:i(!1),charAt:i(!0)}},H6hf:function(t,e,n){var r=n("y3w9");t.exports=function(t,e,n,o){try{return o?e(r(n)[0],n[1]):e(n)}catch(a){var i=t.return;throw void 0!==i&&r(i.call(t)),a}}},HSQg:function(t,e,n){"use strict";n("SC6u");var r=n("2MGJ"),o=n("rG8t"),i=n("m41k"),a=n("qjkP"),c=n("aJMj"),u=i("species"),s=!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")})),f="$0"==="a".replace(/./,"$0"),l=i("replace"),p=!!/./[l]&&""===/./[l]("a","$0"),h=!o((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]}));t.exports=function(t,e,n,l){var v=i(t),d=!o((function(){var e={};return e[v]=function(){return 7},7!=""[t](e)})),g=d&&!o((function(){var e=!1,n=/a/;return"split"===t&&((n={}).constructor={},n.constructor[u]=function(){return n},n.flags="",n[v]=/./[v]),n.exec=function(){return e=!0,null},n[v](""),!e}));if(!d||!g||"replace"===t&&(!s||!f||p)||"split"===t&&!h){var y=/./[v],m=n(v,""[t],(function(t,e,n,r,o){return e.exec===a?d&&!o?{done:!0,value:y.call(e,n,r)}:{done:!0,value:t.call(n,e,r)}:{done:!1}}),{REPLACE_KEEPS_$0:f,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:p}),b=m[1];r(String.prototype,t,m[0]),r(RegExp.prototype,v,2==e?function(t,e){return b.call(t,this,e)}:function(t){return b.call(t,this)})}l&&c(RegExp.prototype[v],"sham",!0)}},"I8a+":function(t,e,n){var r=n("LZWt"),o=n("K0xU")("toStringTag"),i="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,a;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(n){}}(e=Object(t),o))?n:i?r(e):"Object"==(a=r(e))&&"function"==typeof e.callee?"Arguments":a}},IBH3:function(t,e,n){"use strict";var r=n("tcQx"),o=n("VCQ8"),i=n("ipMl"),a=n("5MmU"),c=n("xpLY"),u=n("DYg9"),s=n("F/TS");t.exports=function(t){var e,n,f,l,p,h,v=o(t),d="function"==typeof this?this:Array,g=arguments.length,y=g>1?arguments[1]:void 0,m=void 0!==y,b=s(v),w=0;if(m&&(y=r(y,g>2?arguments[2]:void 0,2)),null==b||d==Array&&a(b))for(n=new d(e=c(v.length));e>w;w++)h=m?y(v[w],w):v[w],u(n,w,h);else for(p=(l=b.call(v)).next,n=new d;!(f=p.call(l)).done;w++)h=m?i(l,y,[f.value,w],!0):f.value,u(n,w,h);return n.length=w,n}},IPby:function(t,e,n){var r=n("wA6s"),o=n("EMtK"),i=n("xpLY");r({target:"String",stat:!0},{raw:function(t){for(var e=o(t.raw),n=i(e.length),r=arguments.length,a=[],c=0;n>c;)a.push(String(e[c++])),c1?arguments[1]:void 0)}})},IXlp:function(t,e,n){var r=n("wA6s"),o=n("O3xq"),i=Math.acosh,a=Math.log,c=Math.sqrt,u=Math.LN2;r({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(1/0)!=1/0},{acosh:function(t){return(t=+t)<1?NaN:t>94906265.62425156?a(t)+u:o(t-1+c(t-1)*c(t+1))}})},Iw71:function(t,e,n){var r=n("0/R4"),o=n("dyZX").document,i=r(o)&&r(o.createElement);t.exports=function(t){return i?o.createElement(t):{}}},IzYO:function(t,e,n){var r=n("wA6s"),o=n("cZY6"),i=n("rG8t"),a=n("6XUM"),c=n("M7Xk").onFreeze,u=Object.freeze;r({target:"Object",stat:!0,forced:i((function(){u(1)})),sham:!o},{freeze:function(t){return u&&a(t)?u(c(t)):t}})},"J+6e":function(t,e,n){var r=n("I8a+"),o=n("K0xU")("iterator"),i=n("hPIQ");t.exports=n("g3g5").getIteratorMethod=function(t){if(null!=t)return t[o]||t["@@iterator"]||i[r(t)]}},J4zY:function(t,e,n){"use strict";var r=n("wA6s"),o=n("uoca");r({target:"String",proto:!0,forced:n("d8Sw")("fixed")},{fixed:function(){return o(this,"tt","","")}})},JHhb:function(t,e,n){"use strict";var r=n("Ew/G"),o=n("/Ybd"),i=n("m41k"),a=n("T69T"),c=i("species");t.exports=function(t){var e=r(t);a&&e&&!e[c]&&(0,o.f)(e,c,{configurable:!0,get:function(){return this}})}},JI1L:function(t,e,n){var r=n("6XUM");t.exports=function(t){if(!r(t)&&null!==t)throw TypeError("Can't set "+String(t)+" as a prototype");return t}},JafA:function(t,e,n){var r=n("6XUM"),o=n("erNl"),i=n("m41k")("species");t.exports=function(t,e){var n;return o(t)&&("function"!=typeof(n=t.constructor)||n!==Array&&!o(n.prototype)?r(n)&&null===(n=n[i])&&(n=void 0):n=void 0),new(void 0===n?Array:n)(0===e?0:e)}},JhPs:function(t,e,n){var r=n("wA6s"),o=n("pn4C");r({target:"Math",stat:!0,forced:o!=Math.expm1},{expm1:o})},JiEa:function(t,e){e.f=Object.getOwnPropertySymbols},JkSk:function(t,e,n){"use strict";var r=n("rG8t");function o(t,e){return RegExp(t,e)}e.UNSUPPORTED_Y=r((function(){var t=o("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),e.BROKEN_CARET=r((function(){var t=o("^r","gy");return t.lastIndex=2,null!=t.exec("str")}))},"Jt/z":function(t,e,n){"use strict";var r=n("wA6s"),o=n("kk6e").findIndex,i=n("A1Hp"),a=n("w2hq"),c=!0,u=a("findIndex");"findIndex"in[]&&Array(1).findIndex((function(){c=!1})),r({target:"Array",proto:!0,forced:c||!u},{findIndex:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}}),i("findIndex")},K0xU:function(t,e,n){var r=n("VTer")("wks"),o=n("ylqs"),i=n("dyZX").Symbol,a="function"==typeof i;(t.exports=function(t){return r[t]||(r[t]=a&&i[t]||(a?i:o)("Symbol."+t))}).store=r},K1Z7:function(t,e,n){"use strict";var r=n("HSQg"),o=n("F26l"),i=n("xpLY"),a=n("hmpk"),c=n("dPn5"),u=n("unYP");r("match",1,(function(t,e,n){return[function(e){var n=a(this),r=null==e?void 0:e[t];return void 0!==r?r.call(e,n):new RegExp(e)[t](String(n))},function(t){var r=n(e,t,this);if(r.done)return r.value;var a=o(t),s=String(this);if(!a.global)return u(a,s);var f=a.unicode;a.lastIndex=0;for(var l,p=[],h=0;null!==(l=u(a,s));){var v=String(l[0]);p[h]=v,""===v&&(a.lastIndex=c(s,i(a.lastIndex),f)),h++}return 0===h?null:p}]}))},K1dl:function(t,e,n){var r=n("ocAm");t.exports=r.Promise},K6ZX:function(t,e,n){var r=n("6XUM"),o=n("7/lX");t.exports=function(t,e,n){var i,a;return o&&"function"==typeof(i=e.constructor)&&i!==n&&r(a=i.prototype)&&a!==n.prototype&&o(t,a),t}},KBkW:function(t,e,n){var r=n("ocAm"),o=n("Fqhe"),i=r["__core-js_shared__"]||o("__core-js_shared__",{});t.exports=i},KMug:function(t,e,n){var r=n("wA6s"),o=n("rG8t"),i=n("6XUM"),a=Object.isFrozen;r({target:"Object",stat:!0,forced:o((function(){a(1)}))},{isFrozen:function(t){return!i(t)||!!a&&a(t)}})},KkqW:function(t,e,n){var r=n("vVmn"),o=n("aAjO").concat("length","prototype");e.f=Object.getOwnPropertyNames||function(t){return r(t,o)}},KlhL:function(t,e,n){"use strict";var r=n("T69T"),o=n("rG8t"),i=n("ZRqE"),a=n("busr"),c=n("gn9T"),u=n("VCQ8"),s=n("tUdv"),f=Object.assign,l=Object.defineProperty;t.exports=!f||o((function(){if(r&&1!==f({b:1},f(l({},"a",{enumerable:!0,get:function(){l(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol();return t[n]=7,"abcdefghijklmnopqrst".split("").forEach((function(t){e[t]=t})),7!=f({},t)[n]||"abcdefghijklmnopqrst"!=i(f({},e)).join("")}))?function(t,e){for(var n=u(t),o=arguments.length,f=1,l=a.f,p=c.f;o>f;)for(var h,v=s(arguments[f++]),d=l?i(v).concat(l(v)):i(v),g=d.length,y=0;g>y;)h=d[y++],r&&!p.call(v,h)||(n[h]=v[h]);return n}:f},KroJ:function(t,e,n){var r=n("dyZX"),o=n("Mukb"),i=n("aagx"),a=n("ylqs")("src"),c=Function.toString,u=(""+c).split("toString");n("g3g5").inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var s="function"==typeof n;s&&(i(n,"name")||o(n,"name",e)),t[e]!==n&&(s&&(i(n,a)||o(n,a,t[e]?""+t[e]:u.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:o(t,e,n):(delete t[e],o(t,e,n)))})(Function.prototype,"toString",(function(){return"function"==typeof this&&this[a]||c.call(this)}))},KsdI:function(t,e,n){n("94Vg")("iterator")},Kuth:function(t,e,n){var r=n("y3w9"),o=n("FJW5"),i=n("4R4u"),a=n("YTvA")("IE_PROTO"),c=function(){},u=function(){var t,e=n("Iw71")("iframe"),r=i.length;for(e.style.display="none",n("+rLv").appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write("