diff --git a/.codacy.yml b/.codacy.yml index 855b4f298b..98fa739209 100644 --- a/.codacy.yml +++ b/.codacy.yml @@ -4,5 +4,7 @@ exclude_paths: - changelog/** - docs/** - pkg/proto/** + - package.json + - rollup.config.js ... diff --git a/.drone.star b/.drone.star index a204a15edb..aebfe43f06 100644 --- a/.drone.star +++ b/.drone.star @@ -32,6 +32,17 @@ def testing(ctx): 'arch': 'amd64', }, 'steps': [ + { + 'name': 'frontend', + 'image': 'webhippie/nodejs:latest', + 'pull': 'always', + 'commands': [ + 'yarn install --frozen-lockfile', + 'yarn lint', + 'yarn test', + 'yarn build', + ], + }, { 'name': 'generate', 'image': 'webhippie/golang:1.13', @@ -152,6 +163,15 @@ def docker(ctx, arch): 'arch': arch, }, 'steps': [ + { + 'name': 'frontend', + 'image': 'webhippie/nodejs:latest', + 'pull': 'always', + 'commands': [ + 'yarn install --frozen-lockfile', + 'yarn build', + ], + }, { 'name': 'generate', 'image': 'webhippie/golang:1.13', @@ -290,6 +310,15 @@ def binary(ctx, name): 'arch': 'amd64', }, 'steps': [ + { + 'name': 'frontend', + 'image': 'webhippie/nodejs:latest', + 'pull': 'always', + 'commands': [ + 'yarn install --frozen-lockfile', + 'yarn build', + ], + }, { 'name': 'generate', 'image': 'webhippie/golang:1.13', diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..5e35a3432c --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,17 @@ +{ + "env": { + "browser": true, + "es6": true, + "amd": true + }, + "extends": [ + "standard", + "plugin:vue/essential" + ], + "parserOptions": { + "sourceType": "module" + }, + "rules": { + + } +} diff --git a/Makefile b/Makefile index e3e0b96008..72c4f577ab 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ endif PACKAGES ?= $(shell go list ./...) SOURCES ?= $(shell find . -name "*.go" -type f -not -path "./node_modules/*") -GENERATE ?= $(PACKAGES) +GENERATE ?= $(IMPORT)/pkg/assets TAGS ?= @@ -79,7 +79,7 @@ lint: for PKG in $(PACKAGES); do go run golang.org/x/lint/golint -set_exit_status $$PKG || exit 1; done; .PHONY: generate -generate: +generate: protobuf go generate $(GENERATE) .PHONY: changelog @@ -156,6 +156,44 @@ docs: docs-copy docs-build watch: go run github.com/cespare/reflex -c reflex.conf -.PHONY: pb -pb: - protoc -I=$(PROTO_SRC) -I=third_party --go_out=. --micro_out=. $(PROTO_SRC)/*.proto +$(GOPATH)/bin/protoc-gen-go: + GO111MODULE=off go get -v github.com/golang/protobuf/protoc-gen-go + +$(GOPATH)/bin/protoc-gen-micro: + GO111MODULE=on go get -v github.com/micro/protoc-gen-micro/v2 + +$(GOPATH)/bin/protoc-gen-microweb: + GO111MODULE=off go get -v github.com/owncloud/protoc-gen-microweb + +$(GOPATH)/bin/protoc-gen-swagger: + GO111MODULE=off go get -v github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger + +$(PROTO_SRC)/accounts.pb.go: $(PROTO_SRC)/accounts.proto + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --go_out=. accounts.proto + +$(PROTO_SRC)/accounts.pb.micro.go: $(PROTO_SRC)/accounts.proto + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --micro_out=. accounts.proto + +$(PROTO_SRC)/accounts.pb.web.go: $(PROTO_SRC)/accounts.proto + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --microweb_out=. accounts.proto + +$(PROTO_SRC)/accounts.swagger.json: $(PROTO_SRC)/accounts.proto + # the other commands above respect the declared package in the .proto file for placement of the resulting file. + # `swagger_out` doesn't, so we have to specify the output path as `$(PROTO_SRC)` instead of `.` + protoc \ + -I=third_party/ \ + -I=$(PROTO_SRC)/ \ + --swagger_out=$(PROTO_SRC) accounts.proto + +.PHONY: protobuf +protobuf: $(GOPATH)/bin/protoc-gen-go $(GOPATH)/bin/protoc-gen-micro $(GOPATH)/bin/protoc-gen-microweb $(GOPATH)/bin/protoc-gen-swagger \ + $(PROTO_SRC)/accounts.pb.go $(PROTO_SRC)/accounts.pb.micro.go $(PROTO_SRC)/accounts.pb.web.go $(PROTO_SRC)/accounts.swagger.json diff --git a/babel.config.js b/babel.config.js new file mode 100644 index 0000000000..d1065d2ff8 --- /dev/null +++ b/babel.config.js @@ -0,0 +1,25 @@ +module.exports = function (api) { + api.cache(true) + + const presets = [ + [ + '@babel/preset-env', + { + useBuiltIns: 'usage', + corejs: '3' + } + ] + ] + const plugins = [ + '@babel/plugin-syntax-dynamic-import', + '@babel/plugin-proposal-class-properties', + '@babel/plugin-proposal-object-rest-spread', + '@babel/plugin-transform-runtime', + '@babel/plugin-proposal-export-default-from' + ] + + return { + presets, + plugins + } +} diff --git a/changelog/unreleased/align-project-structure.md b/changelog/unreleased/align-project-structure.md new file mode 100644 index 0000000000..da0e28fa8b --- /dev/null +++ b/changelog/unreleased/align-project-structure.md @@ -0,0 +1,5 @@ +Change: Align structure of this extension with other extensions + +We aim to have a similar project structure for all our ocis extensions. This extension was different with regard to the structure of the server command and naming of some flag names. + +https://github.com/owncloud/ocis-accounts/pull/51 diff --git a/changelog/unreleased/user-listing-ui.md b/changelog/unreleased/user-listing-ui.md new file mode 100644 index 0000000000..36e3530939 --- /dev/null +++ b/changelog/unreleased/user-listing-ui.md @@ -0,0 +1,5 @@ +Enhancement: Add simple user listing UI + +We added an extension for ocis-web that shows a simple list of all existing users. + +https://github.com/owncloud/ocis-accounts/pull/51 diff --git a/docs/configuration.md b/docs/configuration.md new file mode 100644 index 0000000000..f6c3830234 --- /dev/null +++ b/docs/configuration.md @@ -0,0 +1,84 @@ +--- +title: "Configuration" +date: "2020-07-01T11:10:52+0200" +weight: 20 +geekdocRepo: https://github.com/owncloud/ocis-reva +geekdocEditPath: edit/master/docs +geekdocFilePath: configuration.md +--- + +{{< toc >}} + +## Configuration + +oCIS Single Binary is not responsible for configuring extensions. Instead, each extension could either be configured by environment variables, cli flags or config files. + +Each extension has its dedicated documentation page (e.g. https://owncloud.github.io/extensions/ocis_proxy/configuration) which lists all possible configurations. Config files and environment variables are picked up if you use the `./bin/ocis server` command within the oCIS single binary. Command line flags must be set explicitly on the extensions subcommands. + +### Configuration using config files + +Out of the box extensions will attempt to read configuration details from: + +```console +/etc/ocis +$HOME/.ocis +./config +``` + +For this configuration to be picked up, have a look at your extension `root` command and look for which default config name it has assigned. *i.e: ocis-proxy reads `proxy.json | yaml | toml ...`*. + +So far we support the file formats `JSON` and `YAML`, if you want to get a full example configuration just take a look at [our repository](https://github.com/owncloud/ocis/tree/master/config), there you can always see the latest configuration format. These example configurations include all available options and the default values. The configuration file will be automatically loaded if it's placed at `/etc/ocis/ocis.yml`, `${HOME}/.ocis/ocis.yml` or `$(pwd)/config/ocis.yml`. + +### Envrionment variables + +If you prefer to configure the service with environment variables you can see the available variables below. + +### Commandline flags + +If you prefer to configure the service with commandline flags you can see the available variables below. Command line flags are only working when calling the subcommand directly. + +### ocis-reva server + +Start ocis accounts service + +Usage: `ocis-reva server [command options] [arguments...]` + +--http-namespace | $ACCOUNTS_HTTP_NAMESPACE +: Set the base namespace for the http namespace. Default: `com.owncloud.web`. + +--http-addr | $ACCOUNTS_HTTP_ADDR +: Address to bind http server. Default: `localhost:9181`. + +--http-root | $ACCOUNTS_HTTP_ROOT +: Root path of http server. Default: `/`. + +--grpc-namespace | $ACCOUNTS_GRPC_NAMESPACE +: Set the base namespace for the grpc namespace. Default: `com.owncloud.api`. + +--grpc-addr | $ACCOUNTS_GRPC_ADDR +: Address to bind grpc server. Default: `localhost:9180`. + +--name | $ACCOUNTS_NAME +: service name. Default: `accounts`. + +--accounts-data-path | $ACCOUNTS_DATA_PATH +: accounts folder. Default: `/var/tmp/ocis-accounts`. + +--asset-path | $HELLO_ASSET_PATH +: Path to custom assets. + +### ocis-reva ocis-accounts + +Provide accounts and groups for oCIS + +Usage: `ocis-reva ocis-accounts [command options] [arguments...]` + +--log-level | $ACCOUNTS_LOG_LEVEL +: Set logging level. Default: `info`. + +--log-pretty | $ACCOUNTS_LOG_PRETTY +: Enable pretty logging. Default: `true`. + +--log-color | $ACCOUNTS_LOG_COLOR +: Enable colored logging. Default: `true`. + diff --git a/go.mod b/go.mod index 5440c35867..75f8c8e4c7 100644 --- a/go.mod +++ b/go.mod @@ -11,25 +11,28 @@ require ( github.com/facebookgo/ensure v0.0.0-20200202191622-63f1cf65ac4c // indirect github.com/facebookgo/stack v0.0.0-20160209184415-751773369052 // indirect github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4 // indirect + github.com/go-chi/chi v4.1.0+incompatible + github.com/go-chi/render v1.0.1 github.com/go-test/deep v1.0.6 // indirect github.com/gofrs/uuid v3.3.0+incompatible github.com/gogo/protobuf v1.3.1 // indirect github.com/golang/protobuf v1.4.2 github.com/gopherjs/gopherjs v0.0.0-20200217142428-fce0ec30dd00 // indirect github.com/jmhodges/levigo v1.0.0 // indirect - github.com/joho/godotenv v1.3.0 github.com/micro/cli/v2 v2.1.2 github.com/micro/go-micro/v2 v2.6.0 github.com/oklog/run v1.1.0 - github.com/owncloud/ocis-pkg/v2 v2.2.1 + github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect github.com/restic/calens v0.2.0 github.com/spf13/viper v1.7.0 github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tredoe/osutil v1.0.5 + golang.org/x/net v0.0.0-20200301022130-244492dfa37a google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb - honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab // indirect + google.golang.org/protobuf v1.23.0 + honnef.co/go/tools v0.0.1-2020.1.4 // indirect ) replace google.golang.org/grpc => google.golang.org/grpc v1.26.0 diff --git a/go.sum b/go.sum index 8ce116d14d..91bbac9cd7 100644 --- a/go.sum +++ b/go.sum @@ -16,6 +16,7 @@ contrib.go.opencensus.io/exporter/jaeger v0.2.0/go.mod h1:ukdzwIYYHgZ7QYtwVFQUji contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= contrib.go.opencensus.io/exporter/ocagent v0.5.0/go.mod h1:ImxhfLRpxoYiSq891pBrLVhN+qmP8BTVvdH2YLs7Gl0= contrib.go.opencensus.io/exporter/ocagent v0.6.0/go.mod h1:zmKjrJcdo0aYcVS7bmEeSEBLPA9YJp5bjrofdU3pIXs= +contrib.go.opencensus.io/exporter/prometheus v0.1.0/go.mod h1:cGFniUXGZlKRjzOyuZJ6mgB+PgBcCIa79kEKR8YCW+A= contrib.go.opencensus.io/exporter/stackdriver v0.12.1/go.mod h1:iwB6wGarfphGGe/e5CWqyUk/cLzKnWsOKPVW3no6OTw= contrib.go.opencensus.io/exporter/zipkin v0.1.1/go.mod h1:GMvdSl3eJ2gapOaLKzTKE3qDgUkJ86k9k3yY2eqwkzc= contrib.go.opencensus.io/integrations/ocsql v0.1.4/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= @@ -52,8 +53,12 @@ github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3 github.com/GoogleCloudPlatform/cloudsql-proxy v0.0.0-20190605020000-c4ba1fdf4d36/go.mod h1:aJ4qN3TfrelA6NZ6AXsXRfmEVaYin3EDbSPJrKS8OXo= github.com/Masterminds/goutils v1.1.0 h1:zukEsf/1JZwCMgHiK3GZftabmxiCw4apj3a28RPBiVg= github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.0.2 h1:tRi7ENs+AaOUCH+j6qwNQgPYfV26dX3JNonq+V4mhqc= github.com/Masterminds/semver/v3 v3.0.2/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig v2.22.0+incompatible h1:z4yfnGrZ7netVz+0EDJ0Wi+5VZCSYp4Z0m2dk6cEM60= +github.com/Masterminds/sprig v2.22.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Masterminds/sprig/v3 v3.0.1 h1:RuaOafp+8qOLUPX1lInLfUrLc1MEVbnz7a40RLoixKY= github.com/Masterminds/sprig/v3 v3.0.1/go.mod h1:Cp7HwZjmqKrC+Y7XqSJOU2yRvAJRGLiohfgz5ZJj8+4= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= @@ -71,6 +76,7 @@ github.com/RoaringBitmap/roaring v0.4.21/go.mod h1:D0gp8kJQgE1A4LQ5wFLggQEyvDi06 github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.24.1/go.mod h1:fGP8eQ6PugKEI0iUETYYtnP6d1pH/bdDMTel1X5ajsU= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/UnnoTed/fileb0x v1.1.4 h1:IUgFzgBipF/ujNx9wZgkrKOF3oltUuXMSoaejrBws+A= github.com/UnnoTed/fileb0x v1.1.4/go.mod h1:X59xXT18tdNk/D6j+KZySratBsuKJauMtVuJ9cgOiZs= github.com/abbot/go-http-auth v0.4.1-0.20181019201920-860ed7f246ff/go.mod h1:Cz6ARTIzApMJDzh5bRMSUou6UMSp0IEXg9km/ci7TJM= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= @@ -102,6 +108,9 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= +github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= +github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee h1:3T/l+vMotQ7cDSLWNAn2Vg1SAQ3mdyLgBWWBitSS3uU= github.com/ascarter/requestid v0.0.0-20170313220838-5b76ab3d4aee/go.mod h1:u7Wtt4WATGGgae9mURNGQQqxAudPKrxfsbSDSGOso+g= github.com/asim/go-awsxray v0.0.0-20161209120537-0d8a60b6e205/go.mod h1:frVmN4PtXUuL1EbZn0uL4PHSTKNKFnbMpBIhngqMuNQ= github.com/asim/go-bson v0.0.0-20160318195205-84522947cabd/go.mod h1:L59ZX7HuzTbNzFBt8g3SJkRraj+GBOgvLAfJYJUcQ5w= @@ -110,6 +119,7 @@ github.com/aws/aws-sdk-go v1.19.18/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpi github.com/aws/aws-sdk-go v1.19.45/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.23.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.25.31/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.29.26/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= github.com/beevik/ntp v0.2.0/go.mod h1:hIHWr+l3+/clUnF44zdK+CWW7fO8dR5cIylAQ76NRpg= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= @@ -141,6 +151,7 @@ github.com/blevesearch/zap/v13 v13.0.1 h1:NSCM6uKu77Vn/x9nlPp4pE1o/bftqcOWZEHSyZ github.com/blevesearch/zap/v13 v13.0.1/go.mod h1:XmyNLMvMf8Z5FjLANXwUeDW3e1+o77TTGUWrth7T9WI= github.com/blevesearch/zap/v14 v14.0.0 h1:HF8Ysjm13qxB0jTGaKLlatNXmJbQD8bY+PrPxm5v4hE= github.com/blevesearch/zap/v14 v14.0.0/go.mod h1:sUc/gPGJlFbSQ2ZUh/wGRYwkKx+Dg/5p+dd+eq6QMXk= +github.com/bmatcuk/doublestar v1.1.1 h1:YroD6BJCZBYx06yYFEWvUuKVWQn3vLLQAVmDmvTSaiQ= github.com/bmatcuk/doublestar v1.1.1/go.mod h1:UD6OnuiIn0yFxxA2le/rnRU1G4RaI4UvFv1sNto9p6w= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= @@ -156,12 +167,14 @@ github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QH github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/reflex v0.2.0 h1:6d9WpWJseKjJvZEevKP7Pk42nPx2+BUTqmhNk8wZPwM= github.com/cespare/reflex v0.2.0/go.mod h1:ooqOLJ4algvHP/oYvKWfWJ9tFUzCLDk5qkIJduMYrgI= github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.0 h1:yTUvW7Vhb89inJ+8irsUqiWjh8iT6sQPZiQzI6ReGkA= github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/cheggaaa/pb v1.0.28/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= github.com/cloudflare/cloudflare-go v0.10.2/go.mod h1:qhVI5MKwBGhdNU89ZRz2plgYutcJ5PCekLxXn56w6SY= @@ -186,6 +199,8 @@ github.com/coreos/etcd v3.3.18+incompatible h1:Zz1aXgDrFFi1nadh58tA9ktt06cmPTwNN github.com/coreos/etcd v3.3.18+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= +github.com/coreos/go-oidc v2.2.1+incompatible h1:mh48q/BqXqgjVHpy2ZY7WnWAbenxRjsz9N1i1YxjHAk= +github.com/coreos/go-oidc v2.2.1+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -205,7 +220,12 @@ github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:ma github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0 h1:jTKILSBtDm0GEw3FtXPxc5wxGpaw2pxzREg1GBV9LIQ= +github.com/cs3org/go-cs3apis v0.0.0-20200306065539-29abc33f5be0/go.mod h1:UXha4TguuB52H14EMoSsCqDj7k8a/t7g4gVP+bgY5LY= +github.com/cs3org/reva v0.1.0 h1:PYzDejKm/+xG3OTS2WgzBxcksVogEGmPgjJVegwSR2c= +github.com/cs3org/reva v0.1.0/go.mod h1:8j6QyyAq9Kjj7RPfJb7M1aEmw5DmsuCJKUULXxYOyRo= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d h1:SwD98825d6bdB+pEuTxWOXiSjBrHdOl/UVp75eI7JT8= github.com/cznic/b v0.0.0-20181122101859-a26611c4d92d/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/mathutil v0.0.0-20181122101859-297441e03548 h1:iwZdTE0PVqJCos1vaoKsclOGD3ADKpshg3SRtYBbwso= @@ -239,6 +259,7 @@ github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7j github.com/ef-ds/deque v1.0.4-0.20190904040645-54cb57c252a1/go.mod h1:HvODWzv6Y6kBf3Ah2WzN1bHjDUezGLaAhwuWVwfpEJs= github.com/eknkc/basex v1.0.0/go.mod h1:k/F/exNEHFdbs3ZHuasoP2E7zeWwZblG84Y7Z59vQRo= github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= +github.com/elazarl/goproxy v0.0.0-20181003060214-f58a169a71a5/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.12.0 h1:QAUIPSaCu4G+POclxeqb3F+WPpdKqFGlw36+yOzGlrg= github.com/emirpasic/gods v1.12.0/go.mod h1:YfzfFFoVP/catgzJb4IKIqXjX78Ha8FMSDh3ymbK86o= @@ -269,6 +290,7 @@ github.com/fsouza/go-dockerclient v1.6.0/go.mod h1:YWwtNPuL4XTX1SKJQk86cWPmmqwx+ github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/gliderlabs/ssh v0.2.2 h1:6zsha5zo/TWhRhwqCD3+EarCAgZ2yN28ipRnGPnwkI0= github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= @@ -306,9 +328,11 @@ github.com/go-log/log v0.1.0/go.mod h1:4mBwpdRMFLiuXZDCwU2lKQFsoSCo72j3HqBK9d81N github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= +github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= +github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= @@ -316,6 +340,7 @@ github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEK github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-redsync/redsync v1.3.1/go.mod h1:qxZwM5JOimfq8y98Wk2+c8dKtxJgG5/yIl2ODz2E5Dk= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-stomp/stomp v2.0.3+incompatible/go.mod h1:VqCtqNZv1226A1/79yh+rMiFUcfY3R109np+7ke4n0c= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= @@ -397,6 +422,7 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= github.com/googleapis/gnostic v0.3.1/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/gophercloud/gophercloud v0.3.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20190910122728-9d188e94fb99/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -412,6 +438,7 @@ github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/ad github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0 h1:THDBEeQ9xZ8JEaCLyLQqXMMdRqNr0QAUJTIkQAUtFjg= github.com/grpc-ecosystem/go-grpc-middleware v1.1.0/go.mod h1:f5nM7jw/oeRSadq3xCzHAvxcr8HZnzsqU6ILg/0NiiE= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= @@ -471,6 +498,8 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/huandu/xstrings v1.2.0 h1:yPeWdRnmynF7p+lLYz0H2tthW9lqhMJrQV/U7yy4wX0= github.com/huandu/xstrings v1.2.0/go.mod h1:DvyZB1rfVYsBIigL8HwpZgxHwXozlTgGqn63UyNX5k4= +github.com/huandu/xstrings v1.3.0 h1:gvV6jG9dTgFEncxo+AF7PH6MZXi/vZl25owA/8Dg8Wo= +github.com/huandu/xstrings v1.3.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= github.com/ijc/Gotty v0.0.0-20170406111628-a8b993ba6abd/go.mod h1:3LVOLeyx9XVvwPgrt2be44XgSqndprz1G18rSk8KD84= @@ -481,6 +510,7 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i6rXxKeerYnT8Nvf0QmHCRC1n8sfWVwXF2Frvo= github.com/jcmturner/gofork v0.0.0-20190328161633-dc7c13fece03/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= +github.com/jedib0t/go-pretty v4.3.0+incompatible/go.mod h1:XemHduiw8R651AF9Pt4FwCTKeG3oo7hrHJAoznj9nag= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= @@ -505,7 +535,9 @@ github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfV github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA= +github.com/karrick/godirwalk v1.7.8 h1:VfG72pyIxgtC7+3X9CMHI0AOl4LwyRAg98WAgsvffi8= github.com/karrick/godirwalk v1.7.8/go.mod h1:2c9FRhkDxdIbgkOnCEvnSWs71Bhugbl46shStcFDJ34= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd h1:Coekwdh0v2wtGp9Gmz1Ze3eVRAWJMLokvN3QjdzCHLY= github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= @@ -523,13 +555,16 @@ github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFB github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.8 h1:AkaSdXYQOWeaO3neb8EM634ahkXXe3jYbVh/F9lq+GI= github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= +github.com/labstack/echo v3.2.1+incompatible h1:J2M7YArHx4gi8p/3fDw8tX19SXhBCoRpviyAZSN3I88= github.com/labstack/echo v3.2.1+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= +github.com/labstack/gommon v0.2.7 h1:2qOPq/twXDrQ6ooBGrn3mrmVOC+biLlatwgIu8lbzRM= github.com/labstack/gommon v0.2.7/go.mod h1:/tj9csK2iPSBvn+3NLM9e52usepMtrd5ilFYA+wQNJ4= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= @@ -551,12 +586,15 @@ github.com/marten-seemann/qpack v0.1.0/go.mod h1:LFt1NU/Ptjip0C2CPkhimBz5CGE3WGD github.com/marten-seemann/qtls v0.3.2/go.mod h1:xzjG7avBwGGbdZ8dTGxlBnLArsVKLvwmjgmPuiQEcYk= github.com/marten-seemann/qtls v0.4.1/go.mod h1:pxVXcHHw1pNIt8Qo0pwSYQEoZ8yYOOPXTCZLQQunvRc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.3/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE= github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= @@ -601,6 +639,7 @@ github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go. github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure v1.0.0 h1:ZkRJX1CyOoTkar7p/mLS5TZU4nJ1Rn/F8u9dGS02Q3Y= @@ -618,7 +657,9 @@ github.com/modern-go/reflect2 v0.0.0-20180320133207-05fbef0ca5da/go.mod h1:bx2lN github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8= github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/moul/http2curl v0.0.0-20170919181001-9ac6cf4d929b/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mschoch/smat v0.0.0-20160514031455-90eadee771ae/go.mod h1:qAyveg+e4CE+eKJXWVjKXM4ck2QobLqTDytGJbLLhJg= github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= @@ -654,13 +695,16 @@ github.com/nrdcg/auroradns v1.0.0/go.mod h1:6JPXKzIRzZzMqtTDgueIhTi6rFf1QvYE/Hzq github.com/nrdcg/dnspod-go v0.3.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= github.com/nrdcg/goinwx v0.6.1/go.mod h1:XPiut7enlbEdntAqalBIqcYcTEVhpv/dKWgDCX2SwKQ= github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= +github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d h1:x3S6kxmy49zXVVyhcnrFqxvNVCBPb2KZ9hV2RBdS840= github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d/go.mod h1:IuKpRQcYE1Tfu+oAQqaLisqDeXgjyyltCfsaoYN18NQ= github.com/nsqio/go-nsq v1.0.7/go.mod h1:XP5zaUs3pqf+Q71EqUJs3HYfBIqfK6G83WQMdNN+Ito= +github.com/ogier/pflag v0.0.1 h1:RW6JSWSu/RkSatfcLtogGfFgpim5p7ARQ10ECk5O750= github.com/ogier/pflag v0.0.1/go.mod h1:zkFki7tvTa0tafRvTBIZTvzYyAu6kQhPZFnshFFPE+g= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/oleiade/reflections v1.0.0/go.mod h1:RbATFBbKYkVdqmSFtx13Bb/tVhR0lgOBXunWTZKeL4w= github.com/olekukonko/tablewriter v0.0.1/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -683,17 +727,20 @@ github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFSt github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/ory/fosite v0.30.4/go.mod h1:Lq9qQ9Sl6mcea2Tt8J7PU+wUeFYPZ+vg7N3zPVKGbN8= +github.com/ory/go-convenience v0.1.0/go.mod h1:uEY/a60PL5c12nYz4V5cHY03IBmwIAEm8TWB0yn9KNs= github.com/ovh/go-ovh v0.0.0-20181109152953-ba5adb4cf014/go.mod h1:joRatxRJaZBsY3JAOEMcoOp05CnZzsx4scTxi95DHyQ= github.com/owncloud/ocis-hello v0.1.0-alpha1/go.mod h1:tU2bOB7DjuXZ+ju+5A+7pUHmTfPIYUk3tMflqHTBTpE= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596 h1:3aMNmuDCIdKsaa4YdVTQEBJMjGz8KiuIB/+xlJUCT3k= github.com/owncloud/ocis-pkg v1.2.1-0.20191217084055-eab942498596/go.mod h1:Wo0QfOmhadh2vNcUoQIsw2yaOT3zeftk+xaOOwP3y88= github.com/owncloud/ocis-pkg/v2 v2.0.1/go.mod h1:7bVnn3VUaqdmvpMkXF0QVEF1fRugs35hSkuVTAq9yjk= -github.com/owncloud/ocis-pkg/v2 v2.2.1 h1:LK7WxHYugEFQ9NHTOz0EP8DRjbt51wXhyqruV03z6zI= -github.com/owncloud/ocis-pkg/v2 v2.2.1/go.mod h1:MXv7QzsYsu4YWuyJxhq1kLLmJa/r5gbqHe1FXulMHaw= +github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170 h1:MYfyffPyTZbTofJjAz3LSQUIaKKcjjBBBIJGaEAkP8g= +github.com/owncloud/ocis-pkg/v2 v2.2.2-0.20200602070144-cd0620668170/go.mod h1:s894msGwDsULmsROHkbsXFCP/eSqDcteDFUntZOiJdc= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363 h1:wk/7aAUITTrM192TFoIDq4fqzJQtFOQ0dDdSRkJ25SU= github.com/owncloud/ocis-settings v0.0.0-20200522101320-46ea31026363/go.mod h1:/h0ceztOoFc3KAnm8nqZI4zwsaaZK9q4MTgtintwsXc= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw= github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0= +github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= @@ -712,13 +759,16 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/xattr v0.4.1/go.mod h1:W2cGD0TBEus7MkUgv0tNZ9JutLtVO3cXu+IBRuHqnFs= github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35 h1:J9b7z+QKAmPf4YLrFg6oQUotqHQeUNWwkvo7jZp1GLU= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/otp v1.2.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= @@ -731,6 +781,7 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4 h1:gQz4mCbXsO+nc9n1hCxHcGA3Zx3Eo+UHZoInFGUIXNM= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -738,6 +789,7 @@ github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+ github.com/prometheus/common v0.7.0 h1:L+1lyG48J1zAQXA3RBX/nG/B3gjlHq0zTt2tlbJLyCY= github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -760,6 +812,8 @@ github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= github.com/rs/zerolog v1.17.2 h1:RMRHFw2+wF7LO0QqtELQwo8hqSmqISyCJeFeAAuWcRo= github.com/rs/zerolog v1.17.2/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= +github.com/rs/zerolog v1.18.0 h1:CbAm3kP2Tptby1i9sYy2MGRg0uxIN9cyDb59Ys7W8z8= +github.com/rs/zerolog v1.18.0/go.mod h1:9nvC1axdVrAHcu/s9taAVfBuIdTZLVQmKQyvrUjF5+I= github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= @@ -786,6 +840,7 @@ github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:s github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= @@ -835,6 +890,7 @@ github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpP github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c h1:g+WoO5jjkqGAzHWCjJB1zZfXPIAaDpzXIEJ0eS6B5Ok= github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c/go.mod h1:ahpPrc7HpcfEWDQRZEmnXMzHY03mLDYMCxeDzy46i+8= github.com/technoweenie/multipartstreamer v1.0.1/go.mod h1:jNVxdtShOxzAsukZwTSw6MDx5eUJoiEBsSvzDU9uzog= +github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/timewasted/linode v0.0.0-20160829202747-37e84520dcf7/go.mod h1:imsgLplxEC/etjIhdr3dNzV3JeT27LbVu5pYWm0JCBY= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU= @@ -842,6 +898,7 @@ github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDW github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc h1:yUaosFVTJwnltaHbSNC3i82I92quFs+OFPRl8kNMVwo= github.com/tmc/grpc-websocket-proxy v0.0.0-20200122045848-3419fae592fc/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce h1:fb190+cK2Xz/dvi9Hv8eCYJYvIGUTN2/KLq1pT6CjEc= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/transip/gotransip v0.0.0-20190812104329-6d8d9179b66f/go.mod h1:i0f4R4o2HM0m3DZYQWsj6/MEowD57VzoH0v3d7igeFY= github.com/tredoe/fileutil v1.0.0/go.mod h1:PBayWPFCURwkmW0u6E8E8C6Jtd9ZzWq/U1iMa6BLRPg= @@ -854,7 +911,9 @@ github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGr github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0= github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4 h1:gKMu1Bf6QINDnvyZuTaACm9ofY+PRh+5vFz4oxBZeF8= github.com/valyala/fasttemplate v0.0.0-20170224212429-dcecefd839c4/go.mod h1:50wTf68f99/Zt14pr046Tgt3Lp2vLyFZKzbFXTOabXw= github.com/vultr/govultr v0.1.4/go.mod h1:9H008Uxr/C4vFNGLqKx232C206GL0PBHzOP0809bGNA= github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= @@ -872,12 +931,12 @@ github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5 github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= +go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -885,6 +944,8 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0 h1:OI5t8sDa1Or+q8AeE+yKeB/SDYioSHAgcVljj9JIETY= @@ -906,6 +967,7 @@ gocloud.dev/pubsub/rabbitpubsub v0.17.0/go.mod h1:7o1XYDiIC+b0mmcwJuofsDg08t0DtU golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181030102418-4d3f4d9ffa16/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -915,6 +977,7 @@ golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190404164418-38d8ce5564a5/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -950,14 +1013,13 @@ golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCc golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0 h1:KU7oHjnv3XNWfa5COkzUifxZmxp1TyI7ImMXqFxLwvQ= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180611182652-db08ff08e862/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180921000356-2f5d2388922f/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181005035420-146acd28ed58/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -988,12 +1050,14 @@ golang.org/x/net v0.0.0-20191028085509-fe3aa8a45271/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20191109021931-daa7c04131f5/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191207000613-e7e4b65ae663/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0= golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181003184128-c57b0facaced/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1008,6 +1072,7 @@ golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181019160139-8e24a49d80f8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181021155630-eda9bb28ed51/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1024,6 +1089,7 @@ golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5h golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190415081028-16da32be82c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1082,12 +1148,11 @@ golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361 h1:RIIXAeV6GvDBuADKumTODatUqANFZ+5BPMnzsy4hulY= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200427214658-4697a2867c88 h1:Nj7oNnL9tSACMt2JvszZN6P4IXiy1t6E/YRMr7YtaSw= -golang.org/x/tools v0.0.0-20200427214658-4697a2867c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= @@ -1102,8 +1167,10 @@ google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEn google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1 h1:QzqyMA1tlu6CgqCDUtU9V+ZKhLFT2dkJuANu5QaxI3I= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= @@ -1145,6 +1212,7 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= @@ -1164,12 +1232,16 @@ gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eR gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= +gopkg.in/ldap.v2 v2.5.1/go.mod h1:oI0cpe/D7HRtBQl8aTg+ZmzFUAvu4lsv3eLXMLGFxWk= gopkg.in/ldap.v3 v3.1.0/go.mod h1:dQjCc0R0kfyFjIlWNMH1DORwUASZyDxo2Ry1B51dXaQ= gopkg.in/ns1/ns1-go.v2 v2.0.0-20190730140822-b51389932cbc/go.mod h1:VV+3haRsgDiVLxyifmMBrBIuCWFBPYKbRssXB9z67Hw= gopkg.in/olivere/elastic.v5 v5.0.82/go.mod h1:uhHoB4o3bvX5sorxBU29rPcmBQdV2Qfg0FBrx5D6pV0= gopkg.in/redis.v3 v3.6.4/go.mod h1:6XeGv/CrsUFDU9aVbUdNykN7k1zVmoeg83KC9RbQfiU= gopkg.in/resty.v1 v1.9.1/go.mod h1:vo52Hzryw9PnPHcJfPsBiFW62XhNx5OczbV9y+IMpgc= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.1.9/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.3.1 h1:SK5KegNXmKmqE342YYN2qPHEnUYeoMiXXl1poUlI+o4= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/src-d/go-billy.v4 v4.3.2/go.mod h1:nDjArDMp+XMs1aFAESLRjfGSgfvoYN0hDfzEk0GjC98= gopkg.in/src-d/go-git-fixtures.v3 v3.5.0/go.mod h1:dLBcvytrw/TYZsNTWCnkNF2DSIlzWYqTe3rJR56Ac7g= @@ -1191,8 +1263,8 @@ honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab h1:33/51YKJC1SC6WAomp3Feij834LXL1uK1Jmt45mkghE= -honnef.co/go/tools v0.0.1-2020.1.0.20200427215036-cd1ad299aeab/go.mod h1:NELv708mC2Q9lQf29l+sO/v7NIOAQzEXu7jcugNzwvM= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.0.0-20191109101513-0171b7c15da1/go.mod h1:VJq7+38rpM4TSUbRiZX4P5UVAKK2UQpNQLZClkFQkpE= k8s.io/apimachinery v0.0.0-20191109100837-dffb012825f2/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= k8s.io/apimachinery v0.0.0-20191111054156-6eb29fdf75dc/go.mod h1:+6CX7hP4aLfX2sb91JYDMIp0VqDSog2kZu0BHe+lP+s= diff --git a/package.json b/package.json new file mode 100644 index 0000000000..4372307e1e --- /dev/null +++ b/package.json @@ -0,0 +1,66 @@ +{ + "private": true, + "name": "ocis-accounts", + "version": "0.0.0", + "description": "", + "homepage": "https://github.com/owncloud/ocis-accounts#readme", + "license": "Apache-2.0", + "author": "ownCloud GmbH ", + "repository": "https://github.com/owncloud/ocis-accounts.git", + "bugs": { + "url": "https://github.com/owncloud/ocis-accounts/issues", + "email": "support@owncloud.com" + }, + "scripts": { + "lint": "eslint ui/**/*.vue ui/**/*.js --color --global requirejs --global require", + "build": "rollup -c", + "watch": "rollup -c -w", + "test": "echo 'Not implemented'", + "generate-api": "node node_modules/swagger-vue-generator/bin/generate-api.js --package-version v0 --source pkg/proto/v0/accounts.swagger.json --moduleName accounts --destination ui/client/accounts/index.js" + }, + "devDependencies": { + "@babel/core": "^7.7.7", + "@babel/plugin-proposal-class-properties": "^7.7.4", + "@babel/plugin-proposal-export-default-from": "^7.7.4", + "@babel/plugin-proposal-object-rest-spread": "^7.7.7", + "@babel/plugin-syntax-dynamic-import": "^7.7.4", + "@babel/plugin-transform-runtime": "^7.8.0", + "@babel/preset-env": "^7.7.7", + "@erquhart/rollup-plugin-node-builtins": "^2.1.5", + "@rollup/plugin-commonjs": "^11.0.1", + "@rollup/plugin-json": "^4.0.1", + "@rollup/plugin-replace": "^2.3.0", + "axios": "^0.19.0", + "core-js": "3", + "cross-env": "^6.0.3", + "debounce": "^1.2.0", + "easygettext": "^2.7.0", + "eslint": "6.8.0", + "eslint-config-standard": "^14.1.0", + "eslint-plugin-import": "^2.17.3", + "eslint-plugin-node": "11.0.0", + "eslint-plugin-promise": "^4.1.1", + "eslint-plugin-standard": "^4.0.0", + "eslint-plugin-vue": "^6.1.2", + "qs": "^6.9.1", + "rimraf": "^3.0.0", + "rollup": "^1.28.0", + "rollup-plugin-babel": "^4.3.3", + "rollup-plugin-eslint": "^7.0.0", + "rollup-plugin-filesize": "^6.2.1", + "rollup-plugin-node-globals": "^1.4.0", + "rollup-plugin-node-resolve": "^5.2.0", + "rollup-plugin-terser": "^5.1.3", + "rollup-plugin-vue": "^5.1.4", + "swagger-vue-generator": "^1.0.6", + "vue-template-compiler": "^2.6.11" + }, + "browserslist": [ + "> 1%", + "not dead" + ], + "peerDependencies": { + "owncloud-design-system": "^1.7.0", + "vuex": "^3.5.1" + } +} diff --git a/pkg/assets/assets.go b/pkg/assets/assets.go new file mode 100644 index 0000000000..c4e1efa088 --- /dev/null +++ b/pkg/assets/assets.go @@ -0,0 +1,66 @@ +package assets + +import ( + "net/http" + "os" + "path" + + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-pkg/v2/log" + + // Fake the import to make the dep tree happy. + _ "golang.org/x/net/context" + + // Fake the import to make the dep tree happy. + _ "golang.org/x/net/webdav" +) + +//go:generate go run github.com/UnnoTed/fileb0x embed.yml + +// assets gets initialized by New and provides the handler. +type assets struct { + logger log.Logger + config *config.Config +} + +// Open just implements the HTTP filesystem interface. +func (a assets) Open(original string) (http.File, error) { + if a.config.Asset.Path != "" { + if stat, err := os.Stat(a.config.Asset.Path); err == nil && stat.IsDir() { + custom := path.Join( + a.config.Asset.Path, + original, + ) + + if _, err := os.Stat(custom); !os.IsNotExist(err) { + f, err := os.Open(custom) + + if err != nil { + return nil, err + } + + return f, nil + } + } else { + a.logger.Warn(). + Str("path", a.config.Asset.Path). + Msg("Assets directory doesn't exist") + } + } + + return FS.OpenFile( + CTX, + original, + os.O_RDONLY, + 0644, + ) +} + +// New returns a new http filesystem to serve assets. +func New(opts ...Option) http.FileSystem { + options := newOptions(opts...) + + return assets{ + config: options.Config, + } +} diff --git a/pkg/assets/embed.go b/pkg/assets/embed.go new file mode 100644 index 0000000000..4b9b254250 --- /dev/null +++ b/pkg/assets/embed.go @@ -0,0 +1,173 @@ +// Code generated by fileb0x at "2020-07-01 11:39:14.734417 +0200 CEST m=+0.006772493" from config file "embed.yml" DO NOT EDIT. +// modification hash(75ea29610fe7f7fa52cd0276c7e2565c.8058aec596c5fb73022d09bb97af796e) + +package assets + +import ( + "bytes" + "compress/gzip" + "context" + "io" + "net/http" + "os" + "path" + + "golang.org/x/net/webdav" +) + +var ( + // CTX is a context for webdav vfs + CTX = context.Background() + + // FS is a virtual memory file system + FS = webdav.NewMemFS() + + // Handler is used to server files through a http handler + Handler *webdav.Handler + + // HTTP is the http file system + HTTP http.FileSystem = new(HTTPFS) +) + +// HTTPFS implements http.FileSystem +type HTTPFS struct { + // Prefix allows to limit the path of all requests. F.e. a prefix "css" would allow only calls to /css/* + Prefix string +} + +// FileAccountsJs is "accounts.js" +var FileAccountsJs = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xb4\xfd\xdb\x72\x1b\xb9\x96\x30\x08\x5f\xff\xdf\x53\x90\xb9\xbd\xb3\x81\xcd\x25\x8a\x94\xab\x5c\x55\x49\xc3\x6c\xd9\x96\x0f\x65\x59\xb2\x2d\xdb\x65\x17\xcd\x56\xa4\x48\x50\x84\x4d\x02\x34\x12\x94\x2c\x33\xb3\xa3\xba\xff\x39\x3f\xc2\xdc\xcc\xdc\xce\xd5\xc4\x5c\xcc\x0b\x7c\x4f\xf0\xf5\x23\x4c\xcd\x8b\x4c\xe0\x94\x27\x26\x5d\xb5\xbb\xa3\x23\x14\x62\x26\x12\xc7\x85\x85\x75\xc2\xc2\xc2\x94\xce\x18\xa7\x08\xcd\xd6\x7c\xa2\x98\xe0\x08\x6f\x82\x75\x42\x5b\x89\x92\x6c\xa2\x82\xc1\x55\x2c\x5b\x8a\x04\x6b\x6e\x33\x4e\x83\x36\x51\x37\x2b\x2a\x66\xad\xcb\x85\xb8\x88\x17\xaf\xe7\x2c\x19\x16\x8f\x51\x53\xce\x6b\xc6\xa7\xe2\x7a\x68\x7f\x1a\x73\xd8\x0a\x5c\x3d\x8d\x39\x12\xba\x98\x0d\xf5\xbf\x68\x93\x0d\x7c\x67\x5b\x14\x29\xa0\x78\x23\xa9\x5a\x4b\xde\x52\x88\x92\x0d\xfd\xb2\x12\x52\x25\xd1\x26\xcb\x80\x76\xdd\x1b\x2e\x1e\x33\x3d\x22\x49\xca\x43\x56\x78\xa3\x13\x29\xd9\x4e\x39\xbd\xf8\x48\x27\xaa\xbb\x92\x42\x09\xdd\x13\x90\x84\x76\xe7\x71\x72\x7a\xcd\x5f\x48\xb1\xa2\x52\xdd\x00\x27\x81\x2f\x18\x10\xdf\xdf\xb3\x9b\xe5\x85\x58\x0c\xed\x4f\xb4\xc9\x40\x10\xde\x65\x8a\xca\x58\x09\x99\xa6\xc1\x3f\xfe\xa3\x7f\x09\x80\x11\xde\x8d\x93\x1b\x3e\x79\x5a\xfe\x5e\x49\x09\x20\x26\xbc\xab\xc4\x99\x92\x8c\x5f\xbe\x8e\x2f\x4d\x96\xd2\x7b\x50\x00\x65\xa2\x81\x02\x12\xb8\x1d\x84\x20\x34\x0c\x69\x31\x84\x16\xe3\x89\x8a\xf9\x44\xf7\x72\x36\xa4\xd1\x0c\x98\x1f\xe6\x44\xd2\x58\x51\x24\x8a\xcc\x58\xb7\x4b\xaf\x5b\x47\x88\xa7\xe9\x68\x8c\x07\x0e\xd4\xac\x7b\xce\xf8\x95\xf8\x54\x86\x99\x6e\xd4\x36\xc9\x49\x90\xac\x93\x15\xe5\x53\x3a\x3d\x53\xb1\x54\x81\x2f\x97\xe7\x16\xc0\xf0\x86\xcd\x50\x40\xbf\xd0\xc9\x5a\x31\x7e\x19\x10\x42\x38\x56\x73\x29\xae\x5b\xa6\x49\x29\x85\x44\xc1\x63\xca\x2d\x08\x5a\x2c\x69\xc5\x0b\x49\xe3\xe9\x4d\x4b\xae\x39\xd7\x45\xf0\x40\x57\x31\x11\xcb\xd5\x82\x2a\x3a\xb5\x55\x98\x6a\x4d\x3d\xfa\x5d\xb8\x2a\x99\xef\xc2\x39\xc2\xd9\x4c\x48\x24\xbb\x4b\xaa\xe6\x62\x4a\x04\xc8\x6e\x2c\x2f\x09\x1b\x0c\x6c\xf7\x63\x22\xbb\x53\xba\xa0\x97\xb1\xa2\xba\x81\xd8\x26\x4f\xc8\x05\x8a\x41\x9a\x36\x27\xa6\x95\x09\x21\x24\xc1\x13\xc1\x15\xe3\x6b\xea\x1b\x98\x64\x99\xee\x01\xa7\x5f\x94\xee\x80\x6f\x07\xcb\x6e\x42\xb9\x22\xb2\x7b\xee\x7e\x63\x79\x39\xa0\x8b\x84\xb6\x2a\x1d\xce\xf3\x9b\x71\xd4\xe0\x58\x86\x11\x29\x0d\xdc\x0e\x61\x20\xbb\x53\x96\xac\x62\x35\x99\x1f\x7d\x99\xd0\x95\x81\xb4\xf9\x82\x33\xdd\x50\x60\x7b\x58\x6e\x25\x0c\x65\x37\xbe\x90\xeb\x95\x42\xfe\xab\xad\x0b\x0f\x38\x29\x4d\x8e\x21\x04\x33\xb2\x76\xd3\x6c\xe0\xce\x85\x5c\xc6\x0b\x5d\xdb\xac\x6b\x90\x45\xf7\x98\x6b\xe0\x09\x4e\x87\xa5\xde\x45\xc5\x30\xde\x33\xba\x98\x06\x30\x33\x10\x6f\x80\xde\xe6\x2a\x5e\xac\x69\x64\xbe\x83\xae\x27\xb2\xd5\x65\x59\x01\x21\xdb\x5a\x18\xa2\x3a\x08\xdc\x84\xba\x9c\x6e\x5a\x67\x76\xfc\x59\x86\x14\x48\x88\x31\xb0\x2c\x5f\x2a\x7e\x38\x1b\x25\x6f\x1c\x15\xd9\xe8\xba\x23\x3f\x36\x88\xe5\x65\xa4\xba\x93\x78\xb1\x40\x3a\x63\x96\x4d\x34\x74\x35\x81\xa8\x64\x77\x2d\x9a\xdc\x59\x96\xa9\xee\xb5\x8c\x57\x64\x62\xa0\x96\x90\x32\xc9\x9a\x21\xbc\x29\x3a\xb0\xa8\xbc\xad\xf4\x9b\x2e\x32\xd7\x45\xe6\x23\x31\x26\x25\xba\xec\xa9\xdc\x9c\x25\x99\xa9\x78\xea\xd7\xed\x25\x55\x2f\xfc\x8a\x3d\x9d\xc1\x15\x99\x86\xe1\x14\x4d\xd1\x29\x1a\x8d\x31\xc6\x83\xab\x30\xbc\x6a\x13\x4d\x07\xa4\x1d\xca\x15\x08\x1c\x86\x68\x4e\xae\xb0\xa9\xe9\x86\xac\x8a\x35\x4f\x66\xa5\xe7\x2a\x65\x98\xe3\x62\x20\x4b\x0d\x84\x91\x45\x73\xf0\x00\xf0\x38\x34\xee\xce\x84\x3c\x8a\x27\xf3\x12\x99\xa5\x78\xa3\x46\x74\x5c\xa1\xb2\xa5\x31\x79\x8a\x82\x28\x28\x9c\x65\x18\x17\x70\xb9\xb4\x64\xde\x90\x96\x41\x39\x2f\xa9\xd2\x93\xbc\x40\x5c\x80\x4b\x93\x92\x32\xb1\xe7\x10\xe3\x4d\x3b\xcf\x69\x4a\x42\x0c\x13\x5b\x7d\xa2\x31\x7c\x24\xc6\xa0\x80\x59\x24\xb7\x03\x6b\x13\x92\x38\x1c\xb7\x0b\x21\x31\x08\xba\x20\xb3\xae\x41\x58\xbf\xf6\x17\x61\x18\x08\x03\xb2\x82\x15\x2c\x72\xb0\x2f\x20\x38\x3f\x8f\xaf\x63\xa6\x02\x3c\xa4\x5d\x49\x13\xb1\xb8\xa2\x68\xd1\x75\xa9\xb8\xab\xe6\x94\x57\x39\x13\x77\x94\x04\x94\xe9\x65\x86\xa1\xfe\xd9\x81\xde\x7f\xc7\x51\xa9\xe6\xa6\x1a\x5d\x97\x89\x82\x18\xcd\xb6\x2a\xf4\x60\xdb\xae\x37\x9b\xa0\xc4\xae\x25\x03\x33\x0d\x48\x9d\xea\x0b\x10\x3e\xe4\xb6\xb5\x18\x62\x1c\xc5\x08\x67\xc5\x0c\x5e\x14\x33\x28\x89\xca\x19\xe1\x88\xba\x35\x3b\xd6\xb0\xbe\x12\x6c\xda\xea\x69\xe2\x64\x28\x09\xcd\x89\x30\xe1\xeb\xc5\x02\x0a\x02\x40\xcb\x24\xb2\xa8\xad\x6b\xbb\x12\x86\x88\xe6\xa4\xc0\xd3\x34\x6a\x68\x81\x6d\x01\x6c\x6f\x9a\x2a\xc4\x6e\x34\xc9\x80\xd6\xa9\x89\xad\x41\xa3\xd3\xeb\x9b\x15\x75\xdc\xe9\xf5\x9c\xb6\x7c\xf3\xad\xa9\xa0\x49\x8b\x0b\xd5\x5a\x49\x71\xc5\xa6\xb4\x15\xb7\xfe\xc1\x14\xfe\x87\x96\xad\x2b\xc8\xa1\x65\xc5\x10\x4e\xd6\x48\x42\x31\x00\xdb\x46\x19\xef\x34\xbd\xb7\x78\xe7\x0a\xee\xea\x96\x41\xc7\x3a\xc4\x92\x81\x15\x00\xb8\x65\x0e\xb6\x06\x31\x14\x96\x40\x23\x3a\x52\x1a\x53\xd6\x0b\x75\x12\x2f\xe9\x98\x08\x8b\x18\x40\xbb\x1a\xe3\x88\x32\x3f\xc7\x62\x92\xaf\xea\x76\x01\xa9\x0a\x90\x2d\x82\x96\x41\x8c\xb7\xfb\x82\x23\x11\xa1\x3f\x07\xd5\x1c\xa2\xb6\x77\x9a\xf3\x6b\xb0\xc6\xbc\xe5\xd6\x56\x53\xf5\x05\xb2\x5d\x17\xf2\x9b\x26\xec\xc7\x62\x12\xa9\x51\x6f\x9c\x0d\xfa\x2d\xc6\x5b\xca\x74\xdd\x90\xf1\x63\x31\x21\x6a\xd4\x1f\x63\x38\x28\xbe\xcc\x18\x8f\x17\x8b\x1b\xfb\xed\x60\xac\x7b\x38\x53\x54\xda\xf7\xdb\x63\x0c\x86\x00\x29\x79\x73\xc4\x95\x64\x34\xe9\xae\xd6\xc9\x1c\xd1\x52\xfb\x67\x45\xfb\xaa\xeb\x18\x14\x13\x3c\x4d\x37\xd9\x80\x9a\xd9\x24\x39\x7f\xd1\xa3\x50\xb4\x65\xc0\x00\xe5\xdc\x84\x16\x15\x1e\xe9\x0a\x6b\xcd\x92\x91\x1f\x5b\x20\x85\x50\x41\x36\x06\x95\x13\xdd\x6b\xd3\x49\xd7\x55\x49\x13\xaa\x50\xbb\x57\xea\xe1\xa9\xae\x50\xaf\x9d\xbc\x9f\x23\x61\x96\x60\x09\xcf\x0c\xc5\x52\x16\x19\xb7\xe5\x5b\x8b\x1c\x3e\xb7\xd2\xb9\xda\x2c\x39\x89\x4f\x90\xea\x2e\x28\xbf\x54\x73\xec\x65\xc1\xbd\x3e\x30\x52\x12\xd9\xf1\x46\x8b\x5f\x83\x4e\x87\xdf\xf5\x79\x07\x98\xcd\x90\x23\x92\x0a\x38\x2e\x7a\xe1\x48\xd5\x88\xeb\x89\xd0\x68\x4b\xda\x7d\xc8\xc9\xad\xff\xee\xd6\xb5\xcf\xd1\x03\x9a\x15\x92\xaa\x41\x66\x96\xb9\xa5\xb7\xd1\xaf\xd1\x79\x89\x36\x9d\xe7\xcc\xc2\x09\x1f\xae\x36\x23\x7d\xb4\x7b\xbe\x60\x6b\x51\x62\x8b\x37\xdd\x89\xe0\x89\x92\xeb\x89\x12\x92\xac\x60\x55\x79\x5f\xc0\x6a\x14\x8f\xc9\xc2\x48\x63\x8b\xf8\x46\x2f\x2f\x52\x48\xb2\x8f\x3c\x34\xf5\xd2\x4f\xb6\x92\x1b\xd4\x90\xa6\x09\x08\x43\x55\x6e\xd4\x8d\xb7\xdd\xd6\x82\x11\x25\x84\x2c\xd2\xb4\xa1\x49\x42\x88\x26\xac\x45\xbf\xd2\x94\x76\x79\xbc\xa4\x18\x67\xa0\xba\xcb\x58\x7e\x6a\x62\xd0\x4e\x0c\x48\x2a\x82\xc6\xb0\x31\x15\x29\x58\xe1\x08\xa9\xee\xf9\xb9\x81\xd7\xf9\x39\x59\x41\x6c\xd6\x57\x9a\x22\xa5\x01\xd3\xd0\x2f\x8c\x41\xed\x14\x3b\x6e\x30\x28\xdd\xbb\xd8\x48\x55\xdb\xdd\xdb\x38\xfe\xa9\x65\x2f\x58\xa2\xcb\xb2\xfe\x52\x7a\x19\xb1\x9d\xf2\x14\xa8\xee\x61\x59\xdf\x22\x7a\x31\x1a\x0d\xac\x28\x61\x74\x2a\x30\x82\x46\xce\xa9\x58\x18\x22\x46\x5e\x48\xb1\x64\x09\xb5\xb2\x94\x55\x98\x2e\xd1\xc4\x17\xc0\x5a\x94\xf0\x8d\x35\x4d\x38\x92\x78\x18\x47\xb1\x41\x54\xd4\xc4\xb1\xf3\xc2\x86\x6e\x2b\x8b\xf4\x79\x01\xcd\x84\x61\xa9\x81\x74\x53\x05\x6e\x00\x37\xdf\x10\x21\xe1\x26\xd7\x27\xb7\xb3\x04\x23\x4b\x69\x5b\x79\x65\xe3\x40\x03\xe9\x13\xbd\x49\x1a\xf0\x73\x34\x1e\xe8\x35\x6d\xd8\xbb\x99\x69\x4c\x2d\x59\x94\xb8\x58\xaa\x92\x5e\x51\x99\x50\x84\x21\x5f\x7a\xd2\x13\x03\x9a\x13\x02\x47\x34\x68\x77\x25\x56\xc8\x50\x1f\x6e\x6b\x74\xf5\x48\xb7\xe4\x39\xc8\x9c\x1e\xc8\x2c\xff\xe8\x09\x80\xcc\x74\x77\x4d\xd6\x84\x9c\xc2\x51\x09\xb7\x36\xa5\x55\x13\x1d\x81\x21\x8f\x51\x79\x4c\x9a\x30\x6a\xc2\xb9\x92\xf4\x8a\xf4\x2c\x11\x35\x44\xc4\x3d\x1b\xf5\xcd\x8a\xa1\xe6\xd1\xd1\x0b\x93\xe2\xbb\x64\x5f\x2a\x2c\xca\x24\x55\x59\xa6\x49\x2a\x09\x26\x75\xd6\xe2\xe9\xf9\x19\x86\xb6\xc2\x1e\xc4\xd4\x00\x44\x13\xf8\x40\x59\xe9\x65\x32\x8f\xe5\xa1\x42\x3d\x9c\x8b\x9a\xfa\x33\x50\x1c\x86\x8e\x2a\x77\x68\x37\x59\xb0\x09\x45\x7d\xac\x25\x7f\xfd\x59\xcb\xe2\x8e\x5b\x67\x90\x28\xb1\x8a\x4a\x68\x50\x1a\x4c\xcf\x19\x81\x6a\x9d\x1b\xf5\xc6\x25\x76\x55\x95\x59\x94\x95\x59\xac\xa2\xaa\xca\xd2\x87\xe5\x48\x57\xf1\x22\x83\x2d\x55\xb5\x71\x12\x74\x1f\x7c\x45\x03\xc7\xac\xe6\x2c\x19\x94\x24\x78\x63\xea\x70\xf5\xc7\x8e\xbf\x7a\x85\xcc\x40\x57\x79\x91\x46\x02\xff\x43\xc1\xa5\xdd\xe6\x99\x87\xb4\xa8\x0f\xda\xa1\xe9\x5e\x7f\x20\xee\x91\xde\x60\x6f\x4f\x58\x84\x65\x5b\xd0\x11\x63\x88\x09\xab\x43\xc8\xb0\x6a\x4d\x37\xba\x96\x79\xe3\x42\xdc\xa6\x7c\x6a\xed\x19\xfe\xdb\x5d\x92\x63\xa1\x37\x40\xb8\xc9\x65\x10\x78\xf9\x25\xc0\xb0\x2e\x25\x17\xc2\x8b\xad\x6b\x12\x86\xeb\x2a\x42\xdf\x65\xb9\xec\x53\x34\x5e\xa4\x41\xbb\x67\x0a\x96\xf3\x17\x95\x96\x4b\x94\x52\x33\x6f\xc5\x98\xfc\xdd\x6d\x99\xa2\xba\x50\x7b\xbd\x6d\xfb\x51\xf2\xa6\x95\xa8\x58\xd1\x25\xe5\xaa\x75\xcd\xd4\x5c\xac\x55\xcb\x14\x6f\x09\xd9\x72\x3d\x08\xfe\x1d\x1d\xce\xb2\x0c\xac\xd9\x23\x2a\x1b\xb0\x2c\x35\xb2\x14\x68\xe7\xcc\x73\x3b\xf3\xb9\x79\xad\x3e\xf3\xdc\x48\x52\x62\x7b\x16\xf3\xc5\x29\xaa\x13\x15\x86\x45\xe7\x45\xb9\x9b\x0e\xb5\xc4\xe0\x42\xd2\xf8\x53\x96\x69\x6e\x13\x98\x67\xb3\xc8\xd2\x34\xf0\xd6\x13\xf3\x8e\xc3\xb0\xc0\x1d\x1a\x86\xf4\x2e\x29\x8f\xda\xb0\x2a\x4d\x89\x3c\x9f\x62\xc3\x32\x7e\x46\x9b\x5c\x66\x72\x8b\x48\xb9\xe5\x43\x81\x0d\xd1\x2e\xea\x65\xa5\xab\x52\x33\x5a\xd2\x37\x5f\xbc\x69\x06\xc5\x38\x03\xff\x52\x03\xf7\x9f\xa3\x1a\xa5\x31\x9b\x2c\xf5\x81\x9b\xc4\x61\xd1\x1d\x53\x36\x2a\x59\xbb\x5c\x0e\x94\x53\x1f\x92\x53\x5e\x65\x25\xef\xf2\xe8\xbc\xce\x58\x54\x68\x17\x67\x54\xb2\x78\x29\x67\x83\xa2\x8e\x98\xda\x7c\x14\x43\x92\xc1\x8c\x71\x96\xcc\x2b\xd4\x2c\x27\xdd\xbb\xd1\x8a\x5a\xb4\x2a\xb4\xe4\x1a\x5a\x51\x83\x56\xb2\xac\x9f\xe8\x39\x2f\xd3\xd5\x1c\xe2\xb2\x34\xaf\x20\x73\x05\x06\xc3\x19\x92\xba\x8b\x19\x98\x45\xf4\x9f\xd5\x45\x8b\x83\xa6\x7b\x8e\x9d\xcb\x9d\xac\x82\x97\xcc\x2a\x5e\x53\xd5\xbd\xf4\x2c\x5d\x64\xd9\x16\x5d\x60\x0b\xcd\x57\x17\x8e\x12\xc4\x4a\xd1\xe5\x4a\x05\x38\x03\xcf\x70\x8d\x95\x31\xaa\x9b\xa6\xcb\xa0\xca\x59\xf3\xc6\x2b\x9b\x91\x56\x8a\xa0\xd0\x87\x23\x0a\x4e\xff\x8d\x64\x06\xb9\x39\xb7\x84\x29\x7e\xea\xcb\xdc\x43\xc3\x56\x65\x48\xe5\x3b\x0f\x03\x6b\x5a\xbc\xf4\x72\xd4\xab\x35\x57\x6c\x49\x09\x2d\x2c\x89\xb9\x1c\x18\x48\x63\x41\xab\xe7\x6d\x91\x96\x0c\xb0\x56\x31\x33\x8c\x81\x37\x1a\xd0\xb4\x36\xf0\x3c\x56\x73\x42\xf4\xff\x30\x54\x66\xc7\x01\x6d\x19\xa3\x8a\xad\x9a\x30\x2c\x9e\x71\x9a\x36\xe4\xb5\x1b\x36\x61\x68\x7f\x9b\xf3\x24\x74\x31\x0b\x43\xfd\xbf\xf9\xbb\xee\x18\x4e\xd3\xd2\x10\x8b\x49\x08\x30\xc2\x25\xd5\xd0\x28\xb9\xb9\x1d\xb6\xdd\xd6\xa2\x6d\xcd\xda\xaa\xb5\x31\x88\x49\x9b\x55\x36\xac\x5c\x95\x3f\xb4\xbd\xda\x60\x77\x8f\xfc\x06\x0d\xda\x64\xd0\x87\xcd\x65\x59\xca\x2b\x0a\x65\x19\x1e\xf5\xc7\x1a\xb0\x13\xb2\xc9\xb4\x98\x68\x0a\x3d\x4d\x8e\xf8\x7a\x49\x65\x7c\xb1\xa0\xb0\x2e\x19\x5a\x4b\x3b\x3f\x0f\x69\x32\x91\x6c\xa5\x84\x84\x84\x6c\x66\xd1\x3a\x0c\xdb\x13\x4b\xe1\x37\xfd\xe8\x20\x83\x3e\x1e\x6e\xcb\xca\x6b\x2b\x9b\x29\x5c\xd6\xd8\x68\x97\xe6\xcd\x65\xd1\x24\x83\x19\xa9\x12\x4a\xa7\xe8\x14\xb9\xa2\x36\xea\x87\x0a\xc3\x44\xf0\x19\xbb\x5c\xfb\xb4\x03\x9d\x76\x2d\x99\x72\xef\xdf\xe9\x77\xab\x2f\xd0\x2c\x83\x85\x1e\xa3\x17\xfb\xa1\x49\x97\x6a\x2d\xbc\xe6\xef\x04\xc6\x1f\x61\xaf\x8f\x33\x98\x93\x20\xe8\x26\xab\x05\x53\x30\x25\x4d\xf0\x6f\x5b\x18\xa1\xe0\x6b\x80\x1b\xc1\x88\x7a\x5a\x55\x19\x6e\x37\x19\xd8\xee\x04\x84\xac\x90\xc2\xc3\xb9\xb7\x03\x04\x01\x8e\x5c\xa5\x0a\x67\xee\x11\xae\x48\x4d\x4c\xd4\x2c\x4d\x93\x1a\x4b\x26\x4a\x66\xa4\x07\x31\xff\x07\x2d\x2e\x2c\x16\xce\xfe\xd6\x12\xbc\x15\x74\x54\xa1\x8d\x65\x70\xd3\x04\x82\x29\xba\x42\xca\x68\x55\x0d\x5f\xb7\x51\x7c\xa8\x7b\xd0\x26\x44\x45\x4d\x7a\x7a\x06\x97\x64\x8b\xe9\xb5\x97\xba\x81\xdc\x7a\x62\xc8\x29\x18\xca\x48\xc3\x70\xbb\x16\x24\x35\xc3\x71\xd3\xa6\x85\xfa\xa5\xd9\x67\x71\x13\x95\x57\xc4\x9b\x8d\x35\xa6\xb4\xc1\x81\xd3\xd9\x1f\x14\x6e\xff\xc7\x9a\xdf\x35\x05\x82\x5f\x51\xa9\x9c\xf5\xae\xa5\x44\x6b\x25\xd9\x92\x29\x76\x45\x5b\xa6\x5f\x9a\x76\x5f\x68\xd4\xac\x6d\xad\x5e\x37\xae\x82\xd6\x85\xc7\x10\x8a\x33\x38\x23\xa2\x3b\x15\x93\xb5\x96\x11\xe1\x88\x2c\xd1\x19\x0e\xc3\x25\x3a\x73\xc6\x83\xa3\x85\x91\x1e\x31\x9c\x36\xcd\xf4\xd1\xb0\x96\x0f\x29\x6c\xb6\x8e\xcf\x49\x3b\xd6\xca\xd3\xdf\x45\x68\x4e\x51\x30\x65\x57\x01\x86\x20\x0e\xbe\x45\x70\xba\xb1\xa6\x37\x1f\xff\x90\xaa\x7c\xd1\x54\x25\x1e\x7e\xdc\x16\x9a\x14\xb9\xd1\xdc\x8a\x92\x4b\x44\xb5\x18\x0d\xe7\xb8\x20\x9d\xad\x8f\x16\x34\x39\xf1\xcc\xd8\x0c\x5d\x9b\x34\x3f\x55\x33\xd4\x4e\xba\xb3\x02\x8c\xa0\x46\x74\x8c\xb3\x0c\x0e\xeb\xab\xcb\x62\x6a\x7d\x62\x2d\x2a\x20\x85\x3b\x41\x83\x75\xb6\xb4\xbe\x3e\x35\x83\x0a\x5e\xd8\xa1\x7d\xda\x62\xd2\x6c\x86\x0e\xab\x43\x3b\xd4\x32\x4b\x65\x7c\x9f\x5c\xe6\xea\x08\x83\x4b\xaa\x02\xc6\x5b\x32\x4d\x83\xc4\x3d\x6e\x13\x85\xc3\xc9\x84\x26\x89\x90\xb6\xd3\xc9\x7a\xa5\xd9\x34\x9d\xe6\x9d\x0e\x2c\x42\xea\xc2\x9a\xbf\x6b\x25\xd9\x99\x1c\x30\xa8\x2c\x83\x63\x12\x0f\x77\x08\x16\x2f\xba\x33\x93\x32\x43\x7d\x90\x18\x67\x3b\x05\x10\x53\x29\xa8\x0c\x5e\xd5\xf0\x5b\x8f\xf1\x18\x09\x28\x4d\x9f\xc4\x1b\x31\x52\x63\x42\xbd\x40\x44\x33\x78\x40\xc4\x28\x38\x3f\x9f\x08\x49\xf7\x3e\x26\xe7\xc9\x3c\x96\x74\x7a\x7e\x1e\x8c\xd3\xf4\x15\x6a\xfa\x00\x9b\x0c\xc3\x6b\xe2\xb9\x70\xbe\x96\x07\xc5\x5a\xcf\x3d\x2d\x1e\x74\x19\x4f\x56\x74\xa2\xce\xc4\x5a\x4e\xb4\x7c\x5b\x4b\x69\x5a\x47\xaf\x3d\x31\xc8\xac\x72\x71\x02\x4f\xe1\x0d\x3c\x27\xb5\xa2\x70\x8b\x88\xee\x2f\x34\xfe\xf4\x3c\x5e\xc1\xc3\x26\xb3\xe6\xad\x30\xdc\xe7\xb1\xa1\x0c\x13\x31\xa5\xfb\x5d\x45\x13\x85\x9e\xa3\x5b\x18\xc3\xa3\xba\xd7\x46\x21\x66\x35\xd3\x89\x07\x23\x35\x4e\x53\xa4\x7f\x9c\x80\xd6\x26\x84\x0e\x69\xb4\xc9\x70\x86\x51\x70\x45\x65\xc2\x04\x4f\x02\x18\x8d\xb1\x35\x58\x6d\x5c\x5a\x14\xdc\xee\xde\xe9\x7e\x1f\xc0\x52\x4c\x69\x14\x58\x51\x29\x80\x89\x58\xdd\x48\x76\x39\x57\x51\xf0\x5f\xff\x8f\xd6\x41\xef\xa0\xd7\x7a\x48\x39\x4b\x5a\x2f\xd6\xc9\xfc\x53\x2c\xe9\x55\x0b\x7d\x5d\x08\x26\xc5\xe4\x53\x57\xae\x71\xa0\x1b\xc2\x70\x9f\xf4\xe0\xb3\x91\xcc\xba\x32\xe6\x53\xb1\x44\x18\x1e\x37\xf1\x16\xeb\x2f\x82\x82\x8e\x5b\x60\xb9\xa1\x51\x0d\x83\x20\xd2\xcb\x0d\x9f\x07\x1d\xd4\xe9\xdc\xef\x7c\xc6\xf9\x34\xa2\xdb\x77\x70\x06\x5f\xc9\x23\x14\x7c\xa2\x37\x49\x80\xe1\x6d\xd3\x24\x7d\xb5\xe0\xd0\x3f\xe4\xb1\x65\x70\x4f\xc8\x26\x83\x77\xc5\xa4\x68\x1e\xf0\xd0\x4a\x2a\xcf\x8c\x1d\xf3\x1d\xbc\x27\xcf\x34\x85\x82\x9f\xc9\x33\x4d\x9e\xe1\x25\x79\xd6\x4d\xa8\x1a\x9c\x34\xc3\xfc\xa5\xc5\x84\x67\x06\x87\x81\x66\xf0\xb4\xa9\x2b\xef\xf3\x5c\x38\x4d\x35\xbd\x7d\xd3\x94\xeb\xe7\x22\x57\x66\x0d\x05\xba\x63\xbf\x90\xb7\x28\x30\x66\x81\x00\x0f\x9e\x8c\x7e\x19\x93\x76\x0f\x76\xf4\xe6\x18\x29\xf8\xe5\x5b\x1d\xd1\x64\xf1\x17\x3c\x54\xa3\x5f\xc6\xd1\xce\x7e\xd8\x4c\x99\xd9\xb3\xfb\x15\x94\x22\x9b\x84\xaa\xe8\x04\x34\x85\x7f\x0a\xf3\x38\x89\xde\x00\xe5\x33\x21\x27\x34\x6a\x28\xfe\x46\x4b\x35\x4f\x35\x67\x39\x41\x4a\x2f\xc5\x4c\x97\x54\x54\x3e\x12\xb2\x29\x7f\x79\xc7\xdc\x48\x06\x03\x4b\x87\x29\x4e\x53\x24\xc9\x53\x44\x31\x36\x5a\x53\xbb\x51\xec\x79\xca\xb5\xae\x15\x2b\x76\xb1\xa0\x2d\x49\x27\x94\x5d\x51\x09\x5a\xf0\xe9\x04\x2d\x49\x3f\xaf\x99\x2c\xd1\xbb\x96\xcc\xb2\x0c\xa8\x6a\xf6\x88\x52\x86\x3b\x81\xd4\x0f\x6e\x84\xc0\x89\xc3\x3a\x27\x0f\x58\xa9\x10\x79\x29\x0e\x0f\x76\x2c\x4b\x60\x90\x7b\xd2\xb4\x0d\x77\x6d\xc7\xdd\x35\x4f\xe2\x99\x96\xb0\xf3\x94\x42\xc4\x85\xa4\x48\xe5\xe2\x75\x2c\x2f\xa9\x7a\x4c\xd5\xa0\x81\x6c\x18\xcb\x48\x62\x3b\x90\x53\x32\x9a\xa6\xd7\x88\x41\xc0\xe3\x25\x0d\x70\x9a\x1e\xe7\x2f\x1a\x23\x24\x62\xb8\x9b\x58\x8a\xc6\xbb\x1f\x05\xe3\x79\x0d\x79\xb5\x9a\x56\x04\x66\x6f\xa2\x4d\x88\x18\xa2\xc9\xb0\x9d\x84\xa1\xa6\xdf\x61\x88\xd6\xa4\xdd\xc3\x91\xdb\xc0\xd3\x69\xb0\x1e\x1a\xd2\xce\xa2\x63\x3b\x5e\x8c\xa3\x3c\xe9\x15\xd2\x09\x19\x46\x39\x11\x2e\x9c\xca\x02\xbf\x90\x03\xd8\x16\x37\x9a\x64\x4a\xa3\xbe\x51\xa3\x48\xf8\x31\xa4\xe9\x73\xfb\x9e\x61\x43\x72\xa4\x22\x02\xb8\x6a\x22\x32\x0d\x15\x0e\x95\xdb\xf5\xca\x40\xa8\xe6\xa5\x14\xcb\x4b\x23\x63\x79\x7b\xc0\xdd\x83\x21\x57\x48\xaa\x91\x1a\x6b\xd5\x4f\x21\xcd\xa6\x70\x64\x12\xc2\xd0\xfc\x8c\xe8\x38\x4d\x85\x79\x17\xf6\x35\x03\xa6\x2c\x1d\x9c\x50\xb6\x80\xd8\xbd\xcc\x16\x42\x48\x98\x34\xf5\xb6\xe5\x76\x15\x49\x47\xe1\x61\x2f\x42\xea\x5e\x6f\x18\xab\x88\x29\xac\xb9\x0d\xac\x5d\x0d\x4b\xc6\x21\x69\x2c\xaf\x0b\xac\x15\x32\x4a\x04\xfc\xd4\xeb\xfd\xd0\xff\xe9\xa7\x83\xef\xbf\xfb\xe1\xbb\xde\x4f\x3f\xf5\x71\xd4\xcb\x60\xe6\xeb\x88\xbf\xc0\xa2\x54\xdf\xaa\xb1\xbe\xea\x7e\x90\x33\x5c\x00\x23\x37\xc8\x78\xcb\x25\x0a\x31\xbf\x03\x0a\x93\x1a\x28\xad\xd9\xc4\x74\x25\x5f\x7e\x77\x7b\xc3\x99\x42\xb2\x43\xa1\x87\xa3\x85\x42\x52\xf3\x7e\xe3\xa6\x62\xcc\x9a\x61\x28\xdb\x44\xba\x6d\x92\xf8\xde\xc4\x6c\x95\x22\x41\xd8\x68\xd2\xe9\x8c\x71\x9b\x08\x9c\xeb\xc6\xc6\x0c\x9b\x67\x9c\x74\x3a\x26\xaf\x4a\xd3\x49\x8b\xf1\x16\xc3\x61\xc8\x46\x93\xb1\x71\xb0\xf0\xc0\x49\xd3\x49\x9a\xf6\xbc\x2a\xaa\xc2\x70\xaf\x9f\x65\x30\x57\x64\xc3\xf8\x64\xb1\x9e\xd2\x24\x5a\x99\xcd\x63\x60\x7c\x4a\xbf\x9c\xce\xcc\x6b\x1f\x67\x5d\xf7\x0e\xd3\x3a\xbe\x38\x65\xc6\x4a\xa8\x82\xf4\x80\xf9\xfd\x21\xb3\x37\xc4\x71\xfb\x1a\x3d\x01\x89\xc3\xf0\x1a\x71\xf3\xcb\xf2\xcd\xa2\xca\x66\xd0\x3d\x31\xc0\x26\x0b\xa1\x23\xa1\x07\x1b\x86\xe8\x9f\xe7\x0a\x31\x90\x38\x4d\xf3\x42\x85\x53\x62\x06\x57\x8a\x8c\x82\xd2\xfe\x4e\x00\x41\x55\xa5\x08\x20\x60\x49\x69\xb7\x32\x80\xa0\x49\x57\x0d\xf4\x9a\x3c\x16\x93\x78\x41\xfd\xca\x2c\x2d\xd2\xc0\x29\x53\xc1\x18\x6e\x14\xb9\x32\xfb\xb0\x93\x58\xa1\xc0\xf6\xdb\xd6\x69\x5b\x08\x30\x2c\x95\x96\x75\x1b\x65\xfd\x93\x78\x49\x93\x34\x6d\x52\x41\x15\x52\x70\xa3\xf9\x1e\x5c\xee\x2e\x6f\xc5\x85\x24\x83\x0b\x45\x84\x42\xc1\x2b\x3a\x5b\x68\x09\x1c\x02\x71\xcd\x9f\x19\x51\xa0\x5a\xbb\xa5\xea\x4b\xd5\xb5\x52\x36\x06\x49\x2e\x55\x77\x96\x23\xe3\x90\xfa\xb1\x48\xfd\x39\xa2\x19\x5c\xd7\xe7\x37\xdf\xe9\x23\x17\x4a\xe3\x3c\x27\x2f\xba\x33\x10\xe4\x4b\x77\x06\x8c\xf4\x06\xec\xae\xf4\xbb\x79\xac\xd3\xc9\x5d\x2a\x47\x6c\x3c\xd0\x8c\x34\x36\x86\x22\x05\x31\x08\x44\x21\xc6\x7a\x88\x67\x8a\xec\xff\x25\xfd\x50\x90\xc4\x0f\xdd\x7d\x38\x6a\x44\x2c\x72\xae\x46\xa7\x7a\x01\x8d\xf3\x4e\x13\xf2\x45\xa5\xa9\x6c\x93\x8f\x4a\xb3\x81\x6d\xf2\x46\x87\x0c\x51\x1c\xb5\xdb\x5a\x5f\x3c\x55\xe4\x48\x75\xad\x25\x97\x7d\x6d\x94\x66\x73\xed\xa6\x2b\xe9\x6a\x11\x4f\x28\x3a\x53\x10\x74\x03\x2d\x71\x1d\x8b\x6b\x2a\x1f\xc4\x09\x45\x38\x83\x73\x53\xd7\x34\x56\xb1\x96\xa3\x3e\x9a\xb7\x93\xc3\xd7\x4f\xdf\x1e\x91\xe0\x24\x80\x2f\x26\xe1\xc5\xe9\xf1\xfb\x47\x4f\x8f\x8f\x49\xf0\x22\x80\x43\x9d\x04\x9f\x94\x81\xd6\x8b\x1d\x4b\xc7\x7a\xa4\xc1\x5a\x6b\xdd\x86\xeb\x41\x42\x54\xd7\xca\xa0\x30\x23\xaa\xab\xa5\x1f\x63\x6a\x25\xc9\x50\x44\xb3\xa1\x18\xad\x8d\xec\xbf\xd6\xd2\x45\x84\xec\xeb\x26\xc3\xa5\x8d\x70\x3d\x6b\x66\x27\xd5\x2a\x90\x31\xa1\x23\x3e\x06\x46\x54\x99\xb5\x0e\xd1\x84\x7c\x52\x66\x43\x0d\x87\xe1\xc4\x6d\x34\x4b\x9d\xb3\x7d\xa8\x50\x32\xe4\xd1\xba\x83\x66\xc3\xa0\x1b\x44\xc1\x5f\x02\xdc\xe1\xd6\xe9\x64\x42\xa7\x38\x0c\x73\x11\xdb\xba\xf6\x3a\xe0\xc7\x05\x93\x2e\x9c\x3d\xaf\x15\x8a\x35\x3b\x44\xaa\x9b\xcc\xe3\x65\x9a\x32\x4d\x05\xf4\x23\x0e\xc3\x63\x14\x43\xa0\x9f\x03\xa3\xff\x51\xd3\x21\x88\x8d\x14\x08\xc7\x8a\xb4\xdb\xdf\x5a\x0c\x3b\xb4\xf6\xb6\x17\x5a\xac\x84\x6d\x99\xe4\x2b\x45\x8e\x55\x18\xb6\x6d\xa2\x69\x3f\x0c\x83\xc4\xbc\xd5\x7d\xb9\x0b\x2f\xad\x07\x8a\x1c\x4a\x19\xdf\x74\x59\x62\x7e\x9b\x16\x70\x60\xbe\x38\x93\x56\x06\xaf\x1b\x59\x89\x33\x6e\x39\x63\xd3\x89\xf2\xba\xb2\x16\xe2\x77\x53\x85\x2b\x5d\xe1\x53\x45\xe2\x61\x93\x6a\xcd\x68\x52\x33\x17\xe8\x85\x5e\x6c\xcf\x03\x27\x27\x66\xd9\x0a\xc2\xdd\x32\x35\xab\x56\xdc\x63\x03\x6c\x35\x58\x49\xf8\x88\x75\x3a\x63\xa0\x23\x39\x2e\x2b\xf3\x6f\x2c\x95\xf1\xd6\x96\x00\xf2\x47\x67\x3d\x09\x30\x3c\x57\x5a\x3c\x7f\x7a\x74\xfe\xe2\xd5\xe9\xeb\xd3\x00\xc3\x2d\x55\x76\x2f\xc8\xe0\x61\xa3\x4c\x72\xd7\x1a\x3d\xee\x19\x29\xf5\xee\x87\x7d\xff\x9a\xc1\xa3\x4a\x79\xad\x21\xff\x4a\x7c\xb3\xdd\xa9\x58\xc6\x8c\x87\xa1\x56\x55\x0e\x27\x5a\x6d\x7c\xe7\xcd\x90\x73\xb5\x5c\xcc\xd8\x82\x06\x65\x33\x81\xd9\xc9\x06\x3a\x78\xa4\xc8\xaf\x15\x4b\xa4\xea\x5e\x4b\xa6\x28\x7a\xa8\x90\x15\xf8\xba\x93\x85\xd0\x8b\xdc\xef\x39\x77\x57\xb1\xa4\x5c\xfd\x62\x6c\xe1\x5d\xdb\x48\x0e\x1a\xbb\xc1\x4f\x33\xf4\x2b\x8e\x10\xa2\xe4\x14\x05\x6c\x26\x8d\xd8\x89\xbb\x89\xba\x59\xe4\x2e\x37\x24\xe0\x82\xd3\x00\xde\xa8\x6e\xbc\x5a\x51\x3e\x7d\x30\x67\x8b\xa9\x9e\x0f\xda\x4d\xe4\xc4\x8b\xd6\xc1\xc7\xf8\x2a\xb6\x30\x88\x02\x0c\x48\x11\x43\x98\x55\xd1\x03\x0f\x02\xdc\x15\x2b\xca\x91\xee\x71\x31\x82\x1c\x3e\x8f\x1c\x4a\x55\x86\x04\xaa\xfb\xa8\x84\x11\x9a\x81\x39\x7a\x2d\xf7\xf6\x06\xd8\x49\xb4\x8f\x4a\xfe\x38\xa3\x2b\x35\x92\xe3\x9c\xe2\x3e\x52\x08\x67\x83\x27\xa3\xe7\x6a\xec\xdd\x03\xee\xab\xaa\xcf\x4e\x19\x7d\x73\xca\xe6\xcb\x7b\x7b\xe9\x10\xdd\x2a\x3b\xfd\x18\xbb\x8f\x34\x6a\xe7\x2d\x05\x95\x4f\x06\xbe\xd2\x34\xa8\x70\x24\x89\xee\x01\xe4\xca\x31\x1d\xca\xe8\xa9\x93\x9c\xe0\xb3\x32\xfc\x0d\x1e\xab\x8a\xad\xfb\xab\x22\x7f\xb0\xc1\x11\x86\xbb\x79\xf4\x70\xf7\x27\xe4\xb6\x47\xa2\xd1\x18\xde\x1a\x56\xdd\xa4\x7a\xab\x30\xcc\x7d\x6a\xec\x0c\x8e\x03\x42\x1e\x2b\x6f\x37\x19\x36\xef\x82\xb4\x3e\x1b\xdb\x77\x6d\x1b\xa4\xf5\x55\x39\xe3\x3c\xce\x32\xad\x57\x7e\x56\xe8\xc6\x10\x91\x0c\x9e\x28\xf2\x08\x05\xd7\x9f\x92\x00\xc3\x3b\x45\x44\xd7\x52\x2f\x78\xa6\xc8\x2b\x35\x7c\xa7\xa2\x77\x2a\x0c\xdf\xa9\xae\xdb\x4d\x3f\x33\x8a\x68\x9a\x3e\x86\xf7\x8d\x24\xea\x1a\x3d\x51\x46\x49\x47\x9a\x50\x5e\xa3\x77\xfa\x6d\xf8\x44\x4b\xf7\xe4\x9d\xfe\x1f\xd9\xe7\x67\x5a\x01\xb4\x74\x32\xe8\x68\xc1\xc2\x24\x67\xf0\xb3\x81\xc8\x7b\x95\xc1\x4b\x65\xe4\x84\x5f\xec\xcf\xaf\x8a\xbc\x57\x28\x28\x9f\x60\xc1\xa0\xb6\x8f\x93\x68\xea\x7c\x8d\x14\x91\x43\x15\x95\xcf\xe1\xfc\xaa\x70\x18\xfe\xa2\xc9\xe1\xaf\x0a\x36\xd5\x4d\x90\x5e\xbe\xe1\x81\x33\xa0\xb4\x6e\xd1\x6c\xb0\x79\x6d\x6b\xd1\x4d\x06\xce\x5c\xf4\xaf\x58\x38\xe5\x76\xa7\xd9\x0c\x51\xaa\x91\xb9\xc0\xd0\xc2\xd6\x9f\x5c\x33\x67\xd7\x9b\xc4\x09\x6d\xf5\xa2\xba\x5e\x51\xf2\xf7\xb2\xe7\x0e\x70\x36\x30\x59\xfb\x5b\x59\xe5\x56\x5e\x90\x3e\xf7\xc1\x76\xee\x92\x9f\x4c\x91\x1f\xb8\x2f\x71\xbb\xa9\x04\x88\xc6\x32\x20\x70\xee\x18\xd9\xd4\xf3\x78\xb5\x5a\xdc\x68\xf9\xce\x6b\x8d\x1a\x37\x39\x35\x93\x9e\xac\xe8\x84\x51\x8d\xa0\x82\x36\x09\x40\x1e\xb8\x0f\x34\xee\x57\x24\xba\x76\x79\x43\xa2\x24\xe6\x63\x23\xfe\x59\xae\x1c\x86\xed\x07\x0a\xc9\x92\xe8\x33\x5c\x22\xad\x65\xd8\x7d\x22\x82\x24\x91\x23\x4e\x8d\x36\x21\xfd\xbe\x6d\x94\x3f\x01\xa7\xd7\x25\x4f\xf4\xa1\xa9\x33\x92\x18\x59\x42\xd3\x8b\x34\x8d\x61\x94\x8c\xc6\x46\xff\x80\xb8\xe9\xd8\x58\x9f\x10\xcd\x46\x0f\xf4\x0f\x27\xb7\xf5\x8f\x20\xdf\xe9\x1f\x46\xee\xe8\x9f\x98\x7c\x6f\x1c\x38\xd8\xd6\xc1\xa8\x09\xac\x21\x81\x59\x21\x66\x2f\x60\x05\x73\xf2\x5a\xa1\x09\x86\x2b\x32\x45\x73\x0c\x37\x44\x52\xa4\xb3\xdd\xc6\xb0\xd4\x1a\xe7\x55\xae\x71\x5e\x92\x1e\x5c\x90\x59\x9a\x0a\x0a\xd7\x84\x0e\x2f\xd0\x04\x96\x38\x92\xe6\xa1\x87\x9d\x96\x3f\x58\xde\xbb\x1c\x5c\x3a\xfd\x30\x4e\xd3\x4b\x2d\x18\x5e\x69\x88\xac\xc8\x0d\x5a\x90\xab\xd1\xe5\x18\x2e\x61\x8e\x41\x61\x6c\xdc\x82\xaf\x47\x97\x63\xb2\xca\x8f\x2b\xad\xb0\x43\x63\xe5\xd0\xd8\xe3\x4e\xbb\x67\x71\xe9\x7b\x8f\x4b\x0b\xfb\x7e\xc7\xbf\x5f\x7a\xec\x64\xce\xc5\xf8\x1a\x16\x85\x03\x51\xae\xcc\xf6\x73\xa5\x6e\xb8\xd7\x8f\x78\x9a\x8a\xa1\x88\xae\xb3\x0c\x26\x94\x6c\x9c\x5b\x5c\x14\x53\xd4\xc3\xb0\x8c\x57\xfa\xa9\x8f\x61\xc6\x16\x8a\x4a\xfd\x72\x80\x21\x11\x4b\xaa\x1f\x6f\x63\xa0\x57\x54\xde\xe8\xe7\xef\x74\x1e\x3e\xd5\x8f\xdf\xdb\xc7\xa7\x5a\x8b\xd5\xef\x77\x70\x06\x6b\x4a\x26\xd4\x3b\xdd\x41\x42\xb5\x24\x33\x67\xd3\x29\xe5\x01\x86\x19\x75\x14\xeb\x85\xdf\xbb\x0a\x30\x2c\x8c\x89\x2c\xa1\x0a\x56\xde\x58\x66\xed\x7a\x9e\x1a\x06\x18\xe6\x0d\xc7\x08\xa7\xb4\xa0\xcc\x57\xd4\x48\x55\x3f\x9f\x9d\x9e\x04\xe0\x4c\x50\x6c\x76\x13\x60\xb8\xa1\x46\x4d\x58\x52\x43\x32\x2f\x29\x79\xab\x19\xdb\x05\x25\x49\x77\x06\xd7\x54\x13\x7a\x2b\xab\xea\xb5\x74\x66\xde\xc5\x6a\xaf\x48\x3a\xb2\x59\x4c\x8d\x7b\x4a\xb8\x2f\x7b\x92\x5e\xb2\x44\x49\xdd\xc2\x69\xa9\x12\x93\xc3\xe6\x2d\xe5\x38\xa7\x05\x3f\xf9\xa8\x7b\xfd\xd2\xed\xc3\x7e\xa1\xa4\xfd\x91\xa6\x69\xfb\x63\xe9\x70\x61\xed\xb5\xab\x41\x6c\x24\x1c\x38\xa4\x24\x0e\xc3\x5d\xfb\x69\xf7\x15\x5a\x52\xb4\xc9\xbe\xb5\x73\xb6\xb4\x06\x2f\x9b\xc5\x52\xf8\x1f\xcc\x5e\x5a\x86\xed\x8e\xda\xd6\xbe\x8c\xf5\x3d\xb9\xa1\x68\x4e\x81\xe2\x01\x0f\x43\x27\xdb\xcc\xe9\x88\x8e\x61\x49\x5d\x46\xe0\x61\xa8\xda\x84\xcc\x69\x18\x2e\x6d\x6e\x4d\x15\xa3\x25\x85\x4f\x8d\x14\x8a\x5c\x53\xcd\xf4\xee\x2b\x34\x2d\x8d\x36\xe7\x0a\x0b\x8a\x24\xb8\x93\x61\x0e\x0d\x40\xc5\x97\x91\x82\xa9\xdb\xdc\x63\x82\x6b\xf6\x04\x71\x9a\x22\xd9\x2d\xa5\x12\x8a\x41\x66\xf0\x82\x6a\x6e\xdd\x20\x27\xd7\x75\x13\x95\x35\x89\x1b\xf9\xae\x79\xe9\xac\xe7\x94\x66\x70\xdc\xc0\x60\x89\x1d\xf7\x31\x45\x67\xd4\x42\xc3\x28\x0c\x16\x76\x6e\x0f\xce\x0f\xcc\x6c\xc5\x5d\xa3\x6b\x0d\x9e\x21\x92\x25\x5b\xed\xd0\x6c\x30\x26\x14\x87\xa1\x1a\x25\x74\x3c\xe2\x63\xb3\x7d\x66\x1f\x49\xbb\xaf\x25\xbb\xfb\x5a\x46\x2b\xfb\x30\xcc\x50\x0f\xda\x7d\x73\x68\xc9\x97\x4f\x53\x33\x2d\x89\xdd\x46\xdb\x68\x2d\xad\xa8\xa5\x87\xe1\x50\x7f\xe5\x20\x31\x8e\x96\xfe\x31\x83\x57\xf5\x69\xca\xc7\x20\xad\x61\xce\x68\x3d\x12\x7b\xeb\xc6\x53\x5a\x36\x1c\xad\x29\xe2\x50\x39\xa8\x16\x6b\x2e\xe2\x08\x94\x16\x2b\xd3\xf4\xd8\x21\x8b\xd9\x27\xc5\xc6\x21\xfd\x41\x13\xe9\xbf\x44\xca\x68\xad\x92\x5c\xd0\x8a\x2b\xae\xb7\xb1\x99\x77\x07\x74\x03\x4a\xe3\xa5\x7b\x6d\xa0\x6f\x7c\x73\xdb\x48\xa6\xa9\x16\x7a\x6c\x39\xf3\x6c\xb2\xa5\xa9\x4b\xb4\x60\x9e\xb3\xc4\x00\x86\x8e\x35\xfb\xd3\x4a\x66\x33\xae\x1a\x3b\x5c\x31\x95\x6c\x86\xa4\xc1\x75\x5f\x31\x37\x15\x9f\xe9\x07\xef\x86\x75\x43\x8d\xb0\xe0\xbb\x2c\xaa\x59\xa5\xed\x80\x74\xd3\x92\xa6\x48\x94\x30\xc1\xcc\x92\xc8\x32\x38\x69\x04\x0f\xb5\x92\x2a\x48\x32\x1a\x97\xe0\x4f\xab\xa7\xd0\x4c\x6b\xca\xb4\xf6\xc4\xfc\x4a\x6b\xed\x53\xd6\xb6\x9d\xc1\xd3\xa6\xca\x2d\x2e\x83\xd4\xad\xd0\xe1\x19\x8d\x6c\x53\xbc\xda\x94\xac\x36\xd5\xce\xdb\xa2\x66\x1e\xe6\xf6\x85\xdb\x06\xcd\x42\x37\x8d\xf2\x4c\x83\xee\x58\xa5\x29\xa2\x0a\xa1\x29\x2d\xab\xa5\xce\x01\xb5\x55\x59\x6f\xdb\x5b\x33\x96\x18\x14\x02\x65\xd9\x52\x89\x9d\x9b\x75\xdd\xce\x5e\xb2\xab\xe4\x9f\x46\xbd\xf1\xd0\x49\xa8\xe5\x34\xcf\xde\x81\x9a\xfd\x3d\x90\x55\xdf\xaa\x02\xef\x9c\xef\xc6\x99\x1e\x2a\x94\x91\xca\x3e\xeb\x89\x35\x68\x89\x4a\x48\x66\xd6\xf0\xa1\xa3\xc1\x76\x75\x6a\x8d\x23\xf7\x19\x0d\xc3\x2f\x34\x0c\x0f\x1d\xf9\xdc\x12\xc9\x13\xaa\x22\x99\x61\xf0\x07\x3c\xf1\x9f\xdd\xff\x68\xad\xfc\x46\x87\x8a\x2f\xf5\x44\x50\x4d\x75\x21\xa8\x28\x30\x41\xe3\x21\xc6\x4f\x14\x19\x38\x58\xac\x49\xba\x33\xf2\x80\xc2\x8b\xee\x8c\x1c\x53\xf8\xd2\x9d\x91\xd7\x14\xb4\xaa\x68\xd8\x2a\x39\xa1\x70\xa9\x7f\x9f\x52\xf8\x59\xff\x36\xd7\xf7\x5e\xb9\x0a\x21\x0e\x43\xcd\xb3\xca\x0c\x00\x82\x12\x25\x0f\xb6\x61\xd0\xcc\xd7\xf2\xf1\x95\x0a\x67\x99\x19\xe7\x9c\xee\x32\x4f\x3f\xa0\xb0\xb1\x7b\x67\x51\xbb\x97\x61\x8c\xe1\x85\x42\x1b\x17\x40\xa1\xdd\x83\x6b\x19\xaf\xf4\xaf\x35\xce\x45\xed\x63\x05\xc9\x3c\x5e\xea\x87\x0c\x36\x2e\x2c\xc1\x54\xb3\xa0\x35\x45\x27\x0a\x9d\xd3\xda\x39\xd0\xf6\xf6\xf2\x92\xca\x89\x2c\x9a\x69\xf9\x67\xb2\xc9\xf0\xe0\x1a\xd9\x45\xf3\x52\xe9\x07\xcf\x9d\x35\x18\xcd\x8a\xcd\xdc\xba\xd5\x5d\xb4\x06\xcd\x82\x2f\x26\x2a\x56\xd5\x8e\x66\xa0\x05\xbc\x68\xbb\xfd\x5c\x27\x1b\x18\x7f\x96\x23\x5a\x72\x68\x39\xd2\x1c\xdd\x11\xfc\x29\x45\x05\x2f\x36\x1f\x88\x84\x53\x3a\x92\x63\x42\x35\xed\xf8\x44\x6f\xea\x3b\xaf\x6c\x86\xda\x2f\x68\x93\xa7\x8b\x2a\x2b\x80\x8e\xfb\xba\x0e\x9c\xea\x41\xfb\x0e\x9c\x52\xa3\xef\xae\x13\x6a\x31\xb2\x3c\xd1\x5a\x54\xea\xd9\x6f\x6c\xb9\x5a\xd0\xfa\xb7\xbe\x9e\xee\x32\x70\x9c\xd1\xa6\x01\x38\x6e\x16\xe3\x0c\x36\xd6\xd0\x12\x35\x6e\xd6\x95\x4c\x23\xf7\x8d\x4f\xd3\x2b\x8a\xcc\x83\x31\x91\x54\x7d\x71\xa2\x63\x0a\x5b\x26\xc4\x57\x14\x76\xb9\x25\x45\xaf\xe9\x9f\xee\x6e\x66\x84\xb9\xba\xc9\x24\x3a\xa9\xd7\xee\x6c\xb7\xd1\xd3\x3f\x59\x75\x55\x8e\xd4\xeb\x16\xf5\xed\x41\xa8\x4d\x73\xc5\x0d\xab\xd9\x94\x7a\xad\xac\xdd\x04\xc3\x95\x63\x98\x6f\x28\x69\x6b\x2a\x5f\x6d\xc2\xd2\xe6\x29\x45\xb9\x9f\xd0\x48\xeb\x93\xe3\xa0\x4d\xae\x28\xb2\x7b\xa0\xc1\x26\xb3\xaf\x9b\x38\x52\x59\x39\x21\x97\xc7\x74\x1f\x07\xe5\xf1\x59\xa9\xbf\x36\xba\x37\x34\x83\x4d\xae\x08\x6c\xb9\x11\xe5\x67\x14\x40\x90\x91\x1a\x03\x23\xfd\x41\x9d\x6b\xdc\x63\x03\x2c\x2c\x0b\x2b\x38\x04\xeb\x74\xc6\xf6\x48\x15\xa1\x80\xac\x43\x41\xce\x5c\xb4\xaa\xed\xd6\x40\xa1\x7f\x1b\x97\x83\xba\x58\xd1\x7c\x22\xd4\x9c\xac\x21\xbc\x24\xf3\x18\x87\x33\xd0\x75\x16\xeb\x54\xcf\xaf\x18\xf5\xf5\x4a\xbc\xa2\xce\x4a\x60\x8c\x7b\x42\x4f\x42\x56\xa6\xa6\xa3\x19\x1d\xa7\xe9\x71\x95\xc2\xce\x34\xae\x96\x14\x0c\xef\xd6\x08\x8a\x1a\xae\x90\x6b\x5d\x4f\x34\xdb\xf2\xd6\xc9\xe7\x14\x6e\x51\x78\x68\x15\x2d\x1e\x5f\xb1\x4b\x7b\x3e\x2e\x58\x27\x54\x1e\x5e\x1a\xcb\x75\x9a\x06\x01\x3c\xd2\x1a\xce\x4a\x8a\x09\x4d\x12\xb8\x4f\xc9\x23\x1a\x86\x8f\x68\xd7\x3b\x0a\xc1\x67\x4a\xee\xd3\x30\xbc\x4f\xbb\x57\x3f\x0e\x3e\xd3\xe1\x2d\x4a\xd0\x73\x4a\x3e\x53\xef\x04\xd1\x0d\x30\x1e\xf5\xc6\x9d\xe7\x74\xd4\x1f\x47\x0f\xa9\x91\xe7\x9e\x53\xf2\x90\x76\x97\xc6\x88\xb7\x7f\x34\xbd\xa4\x1f\xf6\xd1\x87\x69\x07\xef\x63\x9c\xa6\x26\xe7\x3d\xf2\xc3\x77\x9a\xdf\x56\x72\x3e\x98\x4b\xb1\x2c\xe5\x0d\x43\x74\x8b\x12\x93\xdf\x0a\x0b\x8f\x29\xb9\x45\xc3\xb0\x73\x8b\xc2\xd7\xba\x69\xe5\x6d\xe3\xce\xd6\x63\x7a\x8f\x7c\xdf\x4f\xd3\xf6\x36\x76\xd3\x42\x4a\x42\xb4\x72\x9c\x75\x93\xe1\xd1\x57\xda\x70\x90\x70\x33\x13\x22\xea\x67\x19\xf4\xdb\x84\x68\xfa\x87\xee\x0b\xb1\xa0\x31\xc7\xdd\x99\x10\x66\x39\x3e\xa1\x3b\x1c\x00\xdf\x51\xb2\xc9\xe0\x19\xad\x89\x28\xe6\xe8\x47\x06\xef\x1b\x70\xee\x1a\xbd\x2b\x13\xdc\x77\xba\xc1\x01\x35\xf8\xb9\xc9\xbc\xb0\x3f\x1a\xeb\x15\xc1\x49\xbb\xad\x79\x52\x70\xf8\xe0\xc1\xd1\xd9\xd9\xe9\xab\xb3\x00\x87\x21\xed\xe6\xaf\x20\x88\xfe\xde\xc3\x43\x3a\xea\x8d\xa3\x67\x14\x26\x26\xa1\xaf\x13\xfa\x63\x6f\x26\x29\x37\x45\xda\x6d\xb9\xb5\xb7\xa4\xd7\x52\x18\xb6\xe3\x7c\x0f\xde\x09\x71\x1b\xbb\x0a\xa3\xbd\x7e\x36\xe0\xc3\x27\x5a\x77\xe8\x57\x34\x1f\x27\x0d\x3c\xa3\x19\x8e\x94\x5e\x0f\x7d\xc8\xcf\x3f\x0b\x17\x6f\x01\x7e\xb6\xf6\x08\x63\xd5\x80\x97\x94\xbc\xa5\x28\xb0\x6f\x01\x86\x5f\x28\x79\x5f\x7a\xaf\x50\x15\xbb\xf9\x04\x66\x99\x94\x09\xf2\x4b\x2d\xf4\xff\xa2\xa9\x8b\x33\x95\x34\x39\x5d\x51\xbf\x7a\xb7\x68\x4a\x7f\x58\xd0\x92\x1c\x48\x7a\xdd\x9a\x51\xff\xda\xac\x7e\x98\x19\xc9\x7d\xdd\xe5\x96\x0d\xc0\x8e\xda\x6e\xa0\x94\x76\x0d\x3c\x32\xf4\x33\x70\x94\x5d\xc9\xb2\x75\x86\x4a\xf2\xab\x1e\xbe\x7d\x0d\x30\x48\x69\xe1\x91\x27\x70\x49\xa8\x0c\x43\x29\x87\xa3\x3c\x1c\x49\xd3\x80\x95\xfc\x7b\x07\xfc\x67\x60\x5d\xb4\xd9\x26\x5c\x5a\x99\xc6\xf4\x80\x4b\x07\x2f\x21\xed\x96\xb9\xac\xb9\xd3\x0b\x69\x79\xd9\xe0\xcf\xb0\xd8\x38\x4d\x99\x2c\x09\x05\x3b\x99\x76\xa3\x98\x20\x24\xba\x71\x42\x81\xeb\x54\x2c\x77\x44\x74\xba\xd4\x32\x95\x3d\x8a\x3b\xb4\xdb\x84\x1c\xb4\xfa\xae\x15\x71\xa5\x95\x73\x99\x7d\xb3\xc3\x7f\xdc\xc5\xa4\xf9\x38\x12\x94\x7c\x49\xac\x8b\xc1\x85\x42\x1c\x83\xd9\x72\x9f\x90\xde\xc0\xbb\xdb\xdc\x9b\x0c\x70\xce\xcd\x90\x24\x02\x71\xa0\xde\x4f\x06\x87\x61\x2c\x51\x6c\x83\x17\x79\x95\xc5\x0f\x7a\x52\x9f\x82\x13\xf5\xe7\xa7\x60\xa2\x27\xf7\x13\xbd\x69\x94\x31\x4e\x54\x21\x61\x98\xa6\xd6\x92\x6c\x1e\x9c\x9d\xbd\x5a\x2f\xe8\x31\x4b\x54\xd4\x83\x07\x67\x67\x67\xea\x66\x41\x1f\xd2\xc9\x22\x96\xb1\x31\x0d\x99\xd4\xb7\x9a\xb5\xf9\x4c\x0b\x46\xb9\x7a\x45\x27\xca\x25\x3c\x3c\x7d\x5e\x7d\xb3\xc2\x71\xf1\xfe\x5a\x7c\xa2\xdc\xbc\xf6\xe1\x61\xac\xe2\xd7\x32\xe6\xc9\x8c\xca\xa7\x8a\x2e\x5d\xae\x47\x2c\xef\xc4\x93\xd7\xcf\x8f\x0f\x17\x8b\x07\x62\xb1\xa0\x13\xd7\x05\x9d\xb6\x95\xf0\x48\xc8\xa5\xdb\xec\x75\x29\x67\x54\xe7\x28\xd2\x9e\xd3\x29\x8b\x5d\xb5\xcf\xd9\x92\x6a\x51\xda\x1a\xd1\x7b\xa0\xa5\xbf\xe9\x89\x98\xd2\xe7\xf1\x4a\xbf\x8a\x29\x75\x5d\x7c\x11\x33\x3d\xbe\xcf\x6b\x9a\xf8\x41\xbd\x58\xac\x2f\x19\xcf\x1f\x7c\x1d\x67\x6f\x1f\x1f\x9b\xf9\x76\xd9\xce\xde\x3e\x3e\x59\x2f\x2f\xa8\x2c\xde\x5f\xc4\x6a\x7e\x46\x2f\x4b\x09\x82\x71\x55\xbc\x56\x60\x75\xf6\xf6\xb1\x85\x8d\x90\x1e\x30\xd6\x59\xf9\xfe\x7a\x36\x2b\x6a\xd5\x53\x74\x36\xa7\xd4\x57\xf3\x9a\x7e\x51\xaf\x65\x3c\xf9\xf4\x20\x9f\xa4\x3c\xc9\xbf\x8b\xf5\xc4\xf5\x32\xcb\xb7\x5b\x13\xe3\x04\xb5\x76\xeb\x6a\x26\x89\x18\x25\x72\x0c\x0b\x49\x66\x32\x0c\x67\xa5\x7d\x0b\x2d\xa8\x2d\x64\x18\x2e\x64\x41\x49\x08\x97\xd8\x3a\x89\x2f\x24\xe4\xb4\x0e\x78\xd9\x17\xbe\xc8\xaf\x09\x8f\xd9\xf2\x5e\x6d\xaf\x6a\x2f\x8f\xd9\x15\xdd\x7c\x9e\x41\x67\x75\xba\x9c\x84\x2a\xf3\xaa\xab\xb6\xc5\x91\xa3\x9e\xe1\x68\xde\xc3\x7d\x2e\xbf\x11\x3c\xf0\xcf\x05\xfc\xfb\xe3\x90\x82\x1b\x17\x0f\x4b\x12\xf4\xc7\x99\x73\x12\x31\x97\xc3\xb9\x8c\x36\x19\xee\x9e\x9f\xbf\x7d\x73\x74\xfe\xf0\xe8\xed\xeb\xd3\xd3\xe3\xb3\xf3\xc7\xc7\xa7\xf7\x0f\x8f\xcf\x9f\x9c\x9e\x3e\x3b\x3f\x2f\x0e\x9a\x5f\x49\x4b\x3b\x4b\x4e\x1a\x48\xe1\x86\x40\x57\x25\xe8\x22\x35\x92\x63\x90\xb8\x12\xce\xea\x46\x96\x03\x2d\xb9\xbd\xf0\x86\xc0\x51\xca\xcc\xdd\x52\xd6\x0f\x09\x98\x43\xac\xfe\x18\xa1\x3d\xa5\x7a\x3e\x99\xb3\xc5\x54\x52\x5e\x8b\x9c\x61\x8e\xfb\xba\x2c\x32\xbe\x7e\x2e\xa6\xeb\x05\x25\xee\xc0\x91\x73\x24\xa2\x36\xa4\x96\x79\x24\x4d\x92\xbd\x1c\x4a\x84\x23\xe9\x3c\xb5\x2f\x25\xd9\x70\xad\xc5\xad\x62\x4d\xfe\xea\x46\x8e\x2c\x1b\x5c\xca\x6e\x91\xa1\x7b\x49\xd5\xb6\xe4\xd8\x6e\xd7\xfa\x54\x2a\x91\xc1\xb2\xb4\x0a\xba\xf1\xd4\xee\x20\x34\x41\x21\x1f\xb6\x3d\x21\x51\x2d\x28\xe9\x52\x5c\xd1\x7a\x59\xbc\xf1\x1e\xbb\xf5\x0a\x6a\xc5\x2f\xa9\xda\x2e\xeb\x45\x86\x3f\x28\x3b\x8f\x93\xdd\x65\x7d\xf4\x86\xa2\x82\x5a\xe9\xf5\x6a\x1a\xab\xba\x60\xbc\x0b\x5a\x44\x95\x5e\x40\x75\x63\x53\x26\xf1\x67\x53\x4b\x65\xdc\x17\x92\xe7\xc1\xa0\xba\xcb\xb5\x8a\x77\x15\xc8\xbf\x91\x52\x3e\x5d\xc8\xee\x72\x35\x15\x71\x5f\x48\x9e\x07\xd7\xc6\xe6\x56\xcb\x36\x74\xae\x24\xaa\x02\xc5\x18\xd9\x9a\xca\x3e\x36\x35\x7f\x13\x3c\x79\x07\xf3\x5a\xb7\xbe\xed\xac\xfe\xd0\xd4\xfa\xcd\xea\x73\x18\x37\x54\xef\xbe\xed\xac\xfe\xb9\x03\xe4\x37\x1b\x28\xcd\x4a\x43\x13\xf9\x57\xd3\xc8\x0e\x27\x30\x54\x6e\x1c\x2e\xa5\x15\x3f\x2e\x24\x5c\x37\x80\xce\xee\xf7\x51\x89\x46\x63\x50\x66\x47\x66\x70\x5d\x5b\x0b\x8d\xa8\xdc\x95\x74\xba\x9e\x54\x4e\x0e\x94\xe3\xb1\xe6\x6b\x08\x51\x9c\xf9\x68\x54\x42\xe8\x5e\xd7\xab\x3f\xf1\x38\xdc\x64\xd6\xf7\xe5\x06\xdf\x6a\xb7\xe4\x0b\xd1\x41\x88\x92\x62\x05\x23\x89\x71\x69\x91\x0c\x65\x27\xd8\x0f\xa2\x20\xd0\x7d\xd2\xff\xab\x9d\x69\x58\x7d\x45\xb8\x40\xe5\xbd\xbe\xcd\x39\x77\x9b\x55\x0b\xa3\xbc\xbb\x34\x73\x93\xe4\x41\x5a\x84\xf1\x75\xce\x93\x8d\x85\x51\x16\x5d\x12\x5e\x8f\x1d\x28\x94\xfb\xdc\x0a\x0c\x95\x2c\x45\xb5\x23\x31\xc6\x59\x66\xa6\xc7\x03\x03\xb6\xc0\xe8\x67\x71\x87\x04\x6f\xc2\xa6\x14\x9e\x0d\xc6\xfd\xa1\xdd\xc3\x3e\x46\x1c\xbd\x6e\x2d\xa5\x71\x20\x19\x98\x03\x47\x4e\xaa\x1e\xe6\x0d\x12\x61\xe3\x3a\x5c\x52\x85\xbc\xff\x51\x0f\xf6\xfa\x18\xe7\x34\x1a\xa9\x91\xca\xc3\x05\x8c\x41\xe0\x01\xf5\x23\x30\x98\x9c\xbf\x95\x77\xdb\x40\xe0\x0d\x2f\x50\x50\x95\xa0\x41\x1d\xeb\xac\xcd\x10\x6f\x18\x69\x05\x59\xb6\xbb\x08\x92\x54\xfb\xc6\xab\x08\x32\xe0\x61\xc8\x3d\x57\x0d\xc3\x0a\xf7\x40\xb2\xde\x03\x96\xbc\x72\x3d\xa0\xd3\x7f\x7f\x1f\x8a\xd0\x48\x9e\x5f\xe8\x96\xcc\x7c\x9c\xed\x1a\x5a\x31\x81\x4a\x93\x5f\xb2\xc9\x30\xb4\x2f\x64\x18\xee\x16\x7c\xbc\x7f\x5b\xf7\xed\x9a\x86\x61\xcd\xea\xad\x8b\x2a\x42\xc8\x85\x3f\x12\x30\x68\xff\x97\xfd\xbf\xb5\xff\xcb\xff\xaf\xf5\xb7\xd6\xd5\x9a\x7e\x69\x5d\xdd\xee\x7e\xdf\xed\x9b\x77\x34\xc1\xf6\xc8\xdb\xd1\x55\xcc\x5b\xef\xc5\xda\xa4\xfe\xa3\x1e\x21\x4f\x68\xeb\xf9\xd3\xd7\x3a\x61\xff\xbf\xd4\x9a\xb0\xd2\x39\x52\xde\x8a\x56\x32\x95\x8d\x7a\x63\x7c\x8f\x1c\x60\xd5\x5d\xb2\x2f\x8c\xa3\xcd\x05\x9d\x09\x49\x1f\x58\xcb\xb6\x56\x94\xf3\x53\x5f\xc6\x05\x33\x9f\x80\x73\xc6\x99\x1a\x6c\xa5\x54\x81\xb6\x0d\x29\xd5\x35\xb9\xec\xcf\x70\x24\xc7\x1e\xd7\x6c\x0a\xd6\x62\x6e\xd9\x80\x59\x0e\x61\x29\x73\x2b\xb0\x99\xde\x5b\xc2\x6c\xd4\x24\x03\x2d\x44\x09\xe9\xc2\x8f\xdc\x32\xcf\x8d\xf1\xda\x7c\x36\xfb\x8b\x70\xe4\x9e\x22\xef\x5a\x1a\x86\xfe\xc9\x55\xe3\xf9\xab\xab\xb4\xf6\x55\xd3\x83\x0b\x49\x14\xce\x50\x31\xbf\x38\x97\xec\x56\x46\x69\xda\x5a\xf0\xa3\xb1\xdf\xda\xd7\xcd\x4b\x36\x51\x45\x0e\x6e\x42\xea\xb6\xfb\x5e\x60\x9c\x88\xe5\x92\x29\xc5\xf8\x65\x1e\xd1\xea\xdc\x0b\x11\xbb\xc5\x4c\x9b\xe3\x6c\x7d\xa1\xf5\xfa\x0b\x2d\x0c\x78\xaa\x75\x5e\x08\x14\xbb\x8b\x5f\xcb\x78\xb5\xa2\xd3\xc7\x4e\x90\xd8\x9d\xd1\x51\x12\x43\xb8\xae\xa5\xd9\x95\x2b\xa7\xe7\x0c\xe5\x79\xbc\xfa\x46\x2d\x49\x53\x3f\xaf\xb5\x2a\x45\xe5\xdb\xe7\xa6\xf2\x0b\xe9\x6b\x8e\x3f\x51\x73\x26\xc4\x75\xee\x41\x3c\x99\xd7\x43\xd5\x15\xf1\x75\x6c\x60\x20\x70\x91\xa1\x7c\xb0\x2b\x88\x89\x0f\xd5\xb2\xd4\x18\x5c\xfe\xd6\x7c\xee\x8a\xf9\x98\x41\xf6\xb8\x7b\xa9\xf4\x2e\x9d\x2e\x2e\x95\x30\xde\x11\x4e\xbe\xd7\xb3\x4d\xb8\xb5\x78\x90\x0a\xb0\x0c\x7d\x77\xca\xc0\x17\x67\x0e\x9b\x40\x31\x6f\xa5\x5c\x18\x3e\xfa\x0c\x9a\x5b\x6d\x6b\x3f\xaa\x1c\x8f\xdd\x6c\xfb\xa1\x62\x8f\xa1\x3b\xa5\x57\x4a\x88\x45\x32\x2c\x1e\xa3\x0b\xd9\xb5\x4a\x44\x9e\x84\xab\x74\x6a\x6a\x8e\x62\x77\xcf\xdd\xe7\x27\x42\x7c\x22\x53\x09\x53\xd9\xa5\x4b\x4d\x49\x34\xa1\x8a\xf4\x02\x0e\x40\x61\x9d\x2c\xb8\x4b\x54\x32\xbe\xa2\xce\xb3\x29\x56\x34\xa8\x7a\x79\x28\x7f\xbe\xe3\x4c\x7f\x74\xbd\x55\xdd\x1c\x27\xea\x72\x4d\xb5\x41\x8f\xcd\x81\x9d\x19\x0c\x9b\x95\xa4\x2b\xca\xa7\x46\x07\x2e\xd7\x63\x45\xca\x6f\xd7\x66\x97\x4d\x73\x5d\x38\x73\x47\xfb\xe0\x48\x92\x8d\x19\x49\x93\xde\x95\x93\xaa\x53\x59\xd7\xf2\xfd\x69\x2d\xa4\xf0\xdd\x9e\x26\x04\x61\xa8\xf9\x99\x69\x62\xa8\x39\x6a\x32\x67\x33\xb3\x51\x48\xbd\xa3\x45\x11\xa6\x0f\x79\x53\x6e\xb9\x9a\x81\xbc\xb7\xd7\xd7\x8c\x52\x53\xf3\x09\x45\x12\xfa\x65\x6a\x79\xee\x94\x65\xf5\x07\x24\xe3\x0f\x89\xc2\x9f\xa3\x08\x7f\x7a\xd9\xd7\x34\x5f\x8d\xec\x20\x0d\xa6\x57\xd1\xdc\xf8\xf0\x7c\xb4\x5f\xcb\xb1\x5d\x3f\xca\x9a\x50\xd5\x3d\xbf\x5a\x0e\x72\x75\x87\x6c\x32\x53\xd3\xdf\x4b\x29\xea\xa3\x04\x46\x36\xd9\xe0\x4a\x22\x51\x91\x94\x24\xde\xb0\x91\x1c\x37\x13\x8a\x06\x37\x5c\x13\x33\xc8\xec\xcd\x37\xaa\x09\x37\x28\xef\x38\xc8\x5d\x6e\x77\x66\x84\x23\x39\xce\xaa\x16\x20\x73\xb0\xdd\x05\x12\x2b\x16\x70\xc2\x16\x94\xab\x41\x3d\x81\xb4\x7b\x60\xea\x71\x04\x15\x6d\xa6\xb1\x8a\xa3\xcd\xad\x5b\x16\x99\xa9\x0d\x10\xb6\x56\x74\x1a\xb1\x0c\xc3\x56\xf9\x18\x3c\xbb\xaa\x52\x06\x53\x69\xf7\x96\x21\xd8\x4d\xae\x85\x96\x7e\xe9\xc6\xba\xae\xad\x4a\xbc\x6b\xac\x85\x82\xcd\x94\x52\xe3\x2b\x91\xdc\xf0\x89\x1d\x99\xf1\x98\xb2\xcb\x44\x4f\x0d\x53\xf3\x07\x86\xe2\x56\x9a\xe0\xd5\x8a\xcd\x19\x05\x4d\x40\x2e\xa4\x09\x06\xf6\x9a\x4d\x3e\x35\x75\x89\x77\x6f\x4d\x69\xa2\xa4\xb8\x31\xa1\x3b\x4b\xb8\xf5\x45\xfa\x9b\x1b\x20\x0f\x2b\xd8\xf6\x67\xe9\x34\xe3\x28\x50\xb4\xac\x31\x21\x1b\x8e\x9f\x97\x54\x1c\x4b\x2e\x1b\x96\xc4\x28\x1e\xef\x58\x2c\xa3\x78\x4c\x38\x86\x36\x0b\xc3\xb6\xf0\xc7\xb4\x0f\x8d\x42\x50\x15\x62\xd7\x44\x8e\x64\x49\x88\xdd\x0d\xa0\x0b\xd9\x4d\xa8\x32\x1e\xcd\xdc\xae\x37\x23\xcc\xdb\x38\xeb\xdc\x9e\x67\xf9\xb2\xcd\xc5\xdc\x0d\x12\x26\xb2\x25\x08\xb2\xf1\xec\x31\xe2\x9a\x69\xf8\x97\xba\x8f\xba\x05\xd7\x27\xe9\xde\x4d\xf0\xc5\x55\x7c\xb3\x10\xf1\x14\x26\x84\x75\x9d\xb8\x06\x6b\xc2\xcc\xd9\xf9\xfc\xb6\x86\x30\x9c\x98\x15\x9f\xa6\x68\x4d\x68\x67\xad\xa9\x89\x6f\x05\xad\xc1\x05\xaf\x5b\x32\x65\xda\x77\x8f\xff\xe1\xd6\x1b\x9b\xb5\x95\xeb\x46\x61\x82\xb3\xdc\xb5\x6a\x97\x86\x2f\xcc\x92\xd5\xab\x37\x32\x6b\x97\x0f\x9b\x56\xaf\xcb\x92\x35\x2c\xed\xad\x2d\xd6\xf6\x2e\xda\x35\xa2\x63\xcf\x04\x36\x99\xd1\x9d\xdc\x89\xa1\x8a\x31\x34\x37\xfa\x34\x88\x05\xc2\x34\x20\x72\x5c\xe2\xd8\x1c\x8b\xf0\x21\x0e\x5d\x3a\xc7\x83\x66\x42\x25\x81\xed\x26\x50\xae\xd9\x91\x68\x20\x52\x96\xa5\xef\x1c\x15\xc9\x63\xc7\x7e\x23\x53\x66\xe3\xe9\x64\xe0\x58\x6f\x73\x3f\x0e\xb5\x8e\x63\x72\x98\x8b\x22\x32\x0c\x22\x33\xe7\x5c\xb5\x76\x59\x37\xff\xa0\x1a\x59\x6f\x57\x57\x01\x70\x13\xdd\xa4\x60\x8e\xe6\x28\x7d\x3d\x45\x4b\xf3\x2e\x6e\x49\x45\xae\x29\x22\x69\xbb\xfe\xd8\x85\xa7\x3b\xd3\x91\x40\x21\xb1\x0e\x8d\x55\x8b\x57\xbd\x47\x3e\x0e\xaf\x46\xd2\xa1\x8c\x74\x49\x61\x2e\xbf\xe1\xd3\x05\x95\x69\x4a\x07\x3b\xfa\xec\xf8\x7d\xde\xe3\xe2\x7d\x57\x7f\xfd\x11\xfa\xbc\xdf\xa5\x35\x5f\x48\xce\x7e\x15\xba\x65\x02\x1e\xf7\x79\xce\xc3\xec\xf4\xf8\x41\xeb\x8e\xbb\x89\x8c\x4a\x7c\x4e\x08\x65\xc4\xbd\xc8\x4d\x56\x56\xf8\xe6\x22\x41\x18\x6e\x0a\x80\xd5\x12\x26\x2a\x73\x9a\x16\xc1\x9e\xf3\x3b\x16\x98\x45\xb0\x92\x6c\x3a\x74\x21\x4e\x6b\x77\x5f\xb8\xb0\x96\xe5\x9c\x65\x01\x90\x4a\x29\x64\x60\x63\x95\x60\xac\xd9\xa0\x99\x31\x0e\xa2\x3e\x5f\x76\x50\x7f\x02\x83\xcc\xed\x08\x35\xc9\x42\xaf\x64\x6f\x79\x6a\xf8\xd6\x64\xe6\x93\xc8\x83\xb4\x00\xb5\xc7\xf4\x92\xa1\x77\x27\x7e\x59\xd3\x46\xf9\x0a\x0e\x86\x37\x9e\xd9\x79\x0d\x9c\x61\x7b\xa8\xa8\xcc\x10\x0f\x65\x45\xc0\xa1\x7f\x60\x6e\xd4\x2b\xd5\xf8\x66\xe6\x15\x7c\xaa\x0b\xc2\x66\xeb\x45\x33\x75\x77\x83\x8c\x24\x14\x28\x51\xa0\x7c\xf0\x51\xe7\xb6\xaf\xc0\x51\xef\x88\x82\xa3\xdd\x91\xcc\xb2\x23\x69\x87\xdd\xbc\xa9\xe1\xa4\x8d\xab\x65\x4d\xe2\x80\xbc\x58\x52\xb3\xa3\x66\x70\x56\x36\x2b\xed\x50\xeb\x0a\xf3\x1d\x08\x92\x0f\x09\x34\xd5\x34\xc6\xdd\x98\x88\x12\xb3\xb1\x03\x60\xf9\x00\xe2\x0c\xd6\xa4\xa6\x7f\x8f\xd8\x78\xb0\xce\xcd\xf7\x3b\xd8\xf7\xba\x59\xb9\x53\x28\xf6\x31\x46\xb6\x54\x68\x7f\x2a\xf1\x0f\xd4\xc2\x49\x59\x1e\xc0\x35\x20\xec\xd0\x86\x8b\x88\xa3\xc0\x1d\x10\xec\x19\x66\x03\x02\x46\x78\x0e\x82\xd8\x81\x40\xe4\x20\x60\x19\x78\x85\xd7\x13\x23\x7b\xdd\xc1\xc4\x9e\xb5\xdc\x61\xb8\x28\x46\x63\x9c\x65\x76\xc4\x64\xb7\x26\xab\x0c\xff\xc1\xa0\x5d\x3e\x14\x83\x2c\xc9\x42\xd5\x93\xc9\x6b\x32\x29\x3c\x4f\x3c\x9d\xd1\x14\x71\xd2\x5d\xc6\xab\x1d\xc0\x64\x06\x88\xd1\x64\xd4\x1b\xa3\x22\xd0\xbc\x96\xb3\x5d\x0d\xf5\xe5\xb2\xae\x47\x98\x77\x81\xc7\x64\x13\x08\xbe\x39\x74\x13\x57\xf6\x8f\x47\x6e\xb2\xed\x1c\xb8\xb5\x12\x54\x9d\x8f\xff\x7d\xdd\x31\x14\xb4\xb9\x3b\x65\x22\x62\xb2\x15\xdd\xb1\xde\xe1\xa5\x0e\x51\xeb\xad\x9c\xd9\xc8\x14\x65\xd4\xcc\x31\xbd\x59\x01\x33\x6a\xf7\xd6\x9a\xb0\x41\x0a\x1b\xab\xd9\xda\x6a\xaa\x56\xd6\x18\xa8\xc7\x99\x48\x23\x95\x45\x6a\x97\xc5\x6d\xbb\xc9\xeb\xad\x15\x55\xdb\x17\xa8\x50\xb0\xdc\xfe\xf5\x2d\xcd\x6a\x9b\x29\xe8\x69\xb4\x06\xa7\xb3\xea\xb6\x44\x61\x63\xd9\x65\xd5\xfe\x26\x21\xa2\xdb\x34\x95\xa8\x6c\x8b\x70\xf8\x4d\x01\xb7\xc9\xbd\x35\xd8\xaa\x21\x54\x6b\x7e\x5b\xf1\x9e\xac\xa5\x78\xa4\xc6\xb8\x6e\xf9\xca\x77\x27\x34\xd9\xf1\x26\xb2\x62\xdf\x1c\x54\xad\x80\xb1\xfe\x63\x30\x46\x96\x84\xca\x2b\x3b\xfc\xc2\x78\x56\x14\xad\x0f\xa3\xd8\xdd\xd8\x1a\x48\x05\x64\x7f\xbe\xf3\x45\x8d\x85\x95\x74\x07\xa8\x2d\x95\xd5\x6a\x5f\xce\xdf\xcb\xca\x9f\x56\xec\xed\xf6\x39\x92\x50\xd9\xcb\x30\xfc\xe0\x5c\x7a\x3b\xd5\x59\x6d\x37\xbc\x61\x28\xfe\x40\xdb\x9f\x1d\x45\x79\xcf\xc5\xc4\xd4\xa8\xb6\x21\xd4\x9b\x5d\xdb\xe6\x39\x1c\xec\x76\x9d\xca\x3b\x6a\x02\xd0\x57\xeb\x29\x01\x66\xd7\xc6\x4e\xc9\x2e\x3e\xd8\x36\x94\xf7\x40\xa1\x06\x03\x3a\xdd\xbd\x51\x5b\x6e\x1f\x8e\xdc\x46\xed\x0b\x49\x1e\xc8\x3a\xe5\xf6\x0a\x98\x5f\xad\xaf\x24\xa2\x3b\xa8\x9d\x97\xde\x3f\xd1\x1b\x23\xb6\x5f\xc5\x8b\x81\x20\xaa\x23\x40\x8e\xf8\xb8\x76\x74\xa9\xad\xd2\xf4\xb5\x2c\x6f\x36\x40\xb0\x8c\x57\x4e\x2a\x0c\x4a\x4e\xb7\xa5\x2c\x15\xad\x4b\x57\xda\xd5\x62\x2c\x31\xf6\x4a\xd0\x64\x18\x8e\xff\x13\xc6\x50\xef\x7d\x11\xb5\x7c\x34\x06\xb9\x75\x78\xca\x46\xb4\x30\x47\x3f\x0a\x4f\x4e\x39\x1e\x94\x42\xfc\xbb\xd1\x78\xb1\x63\x50\x5c\x8b\xc4\x48\x03\x50\x2c\xcd\x36\x40\xb1\x97\x1e\x79\x69\x9a\x9b\xdb\x1e\x8c\x49\x23\xaf\xcc\xe9\x96\x4d\x0a\xc5\x50\x38\xef\x77\x83\x88\x1a\x7c\x4e\x10\xa6\x18\x47\xbc\xf4\xcd\x37\x3e\x12\xe5\x2c\x99\x87\x72\x61\xf5\x7d\x25\x9b\xa2\x94\xa9\x92\x7e\x5a\x8a\x59\x83\x14\x4e\x53\x23\x0d\x67\x48\xe1\x61\xfd\xdb\x50\xed\x92\x38\x36\x9f\xe8\x4d\xa4\xe0\x2a\x5e\x44\x4a\x77\x22\xaa\xb9\x43\x55\x8b\xd1\x4a\x31\x6a\x8b\x69\x39\x5d\x97\x1c\x8d\x0b\x49\xfd\x41\x63\xe7\x4b\xa2\xfb\x76\x74\xbf\xa1\x93\xde\x83\x00\x47\xc1\xbe\xbd\x9c\xcc\x5d\x84\x42\x73\xc2\x84\xc3\x10\xd1\x0e\x09\xf6\x03\x0c\xca\x5d\xe1\x98\x37\xfa\xba\xae\x1e\xec\x30\x8d\xc9\xb1\x11\xcf\x4e\xa4\xf1\xb1\x5f\xf3\x64\x22\x56\xf1\xc5\xc2\xf8\xd9\x3f\x95\x2e\x18\x50\xe1\xb7\x67\x03\x0d\x3c\x95\xa3\x13\x39\x0e\xc3\x17\xdd\x19\x7a\x2a\xe1\x44\xee\x0a\x53\x71\x5f\x59\x5b\xb0\xf3\x10\x7d\x23\xe1\xb9\x84\x5b\x12\x1e\x56\xf7\x80\x6d\x7d\xc6\x11\xbd\x97\xc1\x23\x63\x88\xb9\x2f\xeb\xb1\xd0\x4b\x9e\x0a\x78\x53\x98\x36\xca\x3a\x46\xe1\xd8\x6f\x9c\xae\x1b\xef\x90\x44\x5a\x7e\x54\xd8\x6c\xd9\xe4\x65\x35\xca\x7d\x96\xb5\xf0\x3e\x8f\xe5\xf6\xe9\xf6\xaf\x92\xdc\x97\xc3\xc6\x8a\x1b\x1d\xb0\x89\xf1\x91\x85\x6b\xa4\xe0\xb3\xc4\x43\x35\xfa\x2c\xc7\x8d\xb1\xb4\xcb\xbd\x0f\x43\x55\x3e\x6e\x59\xf9\x36\xac\xbc\x15\x3d\x8b\x2a\x45\x6c\x07\x87\x8f\x65\x64\x4c\xb7\xf0\xd6\xce\x6f\x7e\x31\x2f\x86\x27\x92\xb4\xfb\x83\xd1\xd8\x60\x77\x18\xba\xab\x18\x19\x47\xb7\x24\x71\xa9\x08\xe3\x21\x7a\x2e\xc9\x57\x89\xbe\x4a\x74\x4b\x62\xac\xa1\x56\x07\x49\x18\xa2\x37\x92\x3c\x97\x38\x7a\x62\x9c\x2e\xc0\xe2\xc8\x1b\x69\x3f\x68\x61\xe4\x1a\xbd\x91\xf0\x56\x9a\x38\x95\xe6\xa9\xe9\x2c\xa4\x26\x08\xde\xee\xfe\x4e\x92\x8d\xbf\xaf\x2a\x87\x70\xf4\x46\xc2\xfd\x37\x8f\x1f\xbf\x3f\x3f\x3b\x7c\x74\xf8\xea\xe9\xf9\xd3\xd7\x47\xaf\x0e\x5f\x9f\xbe\x3a\x8b\x9e\xc8\x0c\x9e\x49\xf2\x4e\x76\xb7\x4a\xc1\x7b\xb9\xf3\x9a\xa8\x9f\x77\xf9\x93\xd0\x4e\xd0\xca\xef\x27\x1e\x6c\xa3\x1a\xb9\xaf\xd0\x33\x09\xf6\xc2\x35\x1b\x13\x39\x33\xe7\x74\x14\x70\x68\xf7\x31\x3c\x32\xc4\xfc\xbd\xf1\x13\x7d\x99\xa3\x51\xf5\x36\xb1\x34\x45\x41\x7e\x91\x58\xc0\xf8\x26\x1b\xd6\xc4\x15\x05\xf6\x0e\x28\xcd\x53\xb4\xde\x80\xd4\x1f\xc5\xd5\x46\x5b\x08\x5b\x6a\x02\xeb\x0e\x60\x7f\xf2\x7b\x34\xc6\x40\x89\x2c\x63\x8d\x59\xed\x25\x75\xe1\x5b\x51\x56\xcc\x79\xf9\x9a\x3b\x84\x09\xa8\x6d\xa3\x91\x34\xc7\x6f\xb5\x31\xd3\x13\xaa\x5a\x79\x18\x60\x13\x86\x26\x4e\x5a\x71\xab\x14\x58\x30\x43\x1c\x03\x1d\x2a\xdf\x57\x8e\x23\x59\xba\x74\x8d\x83\xcc\x32\xe4\x8f\x04\x63\xf8\x65\xc7\xd4\xff\x6a\xd2\x9b\x71\x06\x14\xaf\x2f\x09\xca\x77\x62\x8a\xe4\xa4\x6e\x83\x02\x61\xa3\xbe\xfe\x2c\x91\x34\x41\x15\xec\xee\xb3\x8d\x71\x52\x0f\xcc\xa3\x08\x21\x22\x0c\xaf\xbc\xb0\x71\x65\x18\xec\xaf\x6e\xa5\xb7\xe6\x3e\x7d\x3e\x52\xe3\x41\x35\xfe\x88\x8d\x7b\x1c\x99\x47\x7b\xe9\x97\x7b\xa1\xf6\x6a\x92\x60\x77\x94\x1d\x4d\xe9\x64\xe1\xef\xf1\x27\xf2\x61\x73\x91\x42\x05\xfd\x61\xa5\x71\x70\x4e\x2a\x31\x3e\xc8\x7c\xa4\xf8\x38\x4d\xe7\xa3\xf2\x75\xdf\xe3\x34\x15\x61\x38\x1f\x89\x31\x5c\x11\x33\xba\x69\x9a\xce\x90\xc0\x70\x43\xf2\xa8\x71\x34\x0c\xe7\x5d\xd7\xf7\x34\x9d\x6a\x40\xdc\x84\x21\x9a\x68\x32\x73\xe3\x4e\xcc\x18\x0a\xad\xe7\xb5\x91\xde\x4c\xcc\x26\x54\x18\x6a\xaa\x34\xd1\x24\xe9\x17\x4d\x6b\x5e\xca\xe1\x4b\x89\x26\xf0\x8b\xc4\x51\x43\x1c\xa4\x89\xee\x70\x18\x1e\xa3\x09\x28\x0e\x94\x63\xb3\x5e\x27\xb0\xd0\x92\x32\xc6\xe0\x61\x6b\xe6\x69\x1a\x86\xfe\xbd\x4d\xc8\xd4\x6c\x3f\x99\x08\x32\x9a\xb3\x35\x20\xc9\xb4\xf0\xac\xd1\x84\xc0\x00\xa7\x4d\xc8\x95\x6e\x6f\xae\xdb\xbb\x32\x24\x81\x8e\xc9\x15\x08\xcc\x66\x68\x4d\xac\xf3\x79\x12\xcd\x90\x6f\x09\x83\x39\x6a\xc1\x86\x57\x3a\xd1\x45\xbb\x76\x80\xd2\x29\x7e\xbe\x71\x06\xb1\xf1\xc5\x4b\x8c\xbb\x3d\x46\xbf\xca\x34\x5d\xa5\x69\xdb\x26\xcc\x31\x0e\x43\xaa\xd0\x1c\x12\x58\x8f\x92\xb1\x75\x34\x6a\x95\x8e\x7b\xd0\xad\x13\x3d\xa6\x86\x0c\xd6\x45\xd8\x88\x0c\x38\xf7\xf1\x5f\x04\xaf\xc5\x7f\x31\x53\x59\x60\x08\x86\x98\x13\xc9\x91\x49\x06\x7f\x6a\xa8\x26\x1c\x73\x6e\x11\xd1\xc5\x0e\xa9\x55\x01\xae\x6b\xe6\x30\x8c\xd9\x89\x8f\x7a\xf0\x89\xf1\xa9\x89\x74\x55\xdd\xd7\xb4\x9e\x4a\xc2\xd6\xa7\x69\x58\x1e\x4a\x52\x12\xd5\xd5\x85\x80\x1b\x3f\xa8\x29\xfd\xd2\xe9\xf8\xe3\x59\x34\x4d\xf9\xbd\x7c\x73\x67\x88\x7c\x21\x7f\x3f\x5d\xf3\x05\x99\x38\xb2\x13\x41\x88\x1c\xba\x1c\xdc\x7d\xec\x67\x51\x81\x33\xf9\x57\x13\x7a\x32\xcf\xe0\x12\x47\x1c\x74\x7a\xf1\x21\x2b\xf0\x0d\x0f\x1e\xc9\xee\xa1\x17\xe0\x89\x79\xd1\x60\x7c\x28\x73\x1c\xd0\x8f\x39\x8e\xe8\x97\x1c\x13\x2c\xc9\xa9\xd3\x26\xc7\xc5\x40\xf8\xd9\x7c\x29\x1b\xaf\xbe\xe0\xa4\x22\x33\x69\xca\xdd\x36\x36\x84\x25\x12\xa4\x14\xc4\x19\x87\xa1\xd0\x1f\xca\x6b\xf0\xa5\x96\x2f\x85\x89\x15\xb2\xe6\x24\x18\x7d\x50\x1f\xf8\x87\xab\x0f\xb3\x0f\xb2\xf5\x5f\xff\xf7\xff\xe7\x7f\xfd\xed\xf7\xdf\x7e\xfb\xfd\xb7\x7f\xf9\xfd\xb7\x7f\xfd\xfd\xb7\xff\xff\xef\xbf\xfd\x77\xbf\xff\xf6\xdf\xff\xfe\xdb\xff\xf0\xfb\x6f\xff\xe3\xef\xbf\xfd\x4f\xbf\xff\xf6\x3f\xff\xfe\xdb\xff\xf2\xfb\x6f\xff\xe7\xef\xff\xf2\xbf\xfd\xbf\xbf\xfd\xf6\x61\x7d\xd0\x3b\xf8\xd1\xfc\xff\xe9\xc3\x7a\x46\x67\xb3\x71\x00\x09\x27\xaf\xe8\xe5\xd1\x97\x15\x0a\xfe\x29\xe8\xac\xb9\xfe\x0b\xfe\x16\x60\x98\xe5\x1f\x7c\xe2\xad\x00\xc3\xa2\xf1\xe6\xa0\xba\xc2\x25\xfd\x31\xfb\x2b\xad\x66\x78\xe0\xf4\x43\x65\xac\x26\x32\x8f\x88\x9a\x70\x30\x81\x12\x0f\xb6\xbe\xcc\xdc\x17\x99\x65\xb0\xe2\xc6\x5f\x45\xaa\x68\xc1\x51\x5f\xaf\xd4\xa9\x7e\x3a\xc0\xa0\x24\x5b\xea\xc7\xdb\x38\x83\x39\xb7\x21\xfb\xa6\xdc\x9c\xf0\xba\xb2\x11\x65\x6f\x38\x59\xf1\xae\xce\x07\x4b\x4e\x44\xd7\xfa\x11\xc2\x25\x27\xcb\x72\xf0\xec\x0b\x4e\x02\xfb\xc9\x44\xdb\xbc\xaf\xd0\xa5\xa6\x5b\xd7\x0d\xf7\xa8\x16\x1c\x09\x0c\x0b\xb2\xc1\x5a\xfa\xf6\x8e\xdb\xba\x21\x22\x09\xc3\xfc\x1c\xe0\x81\x26\x47\xdf\xdd\x36\x97\xa7\x12\x94\x90\x1b\x8e\x12\x8c\x8d\xb6\xf1\x40\x4c\xa9\xb9\x7a\x11\xa7\xe9\x77\xdf\xdb\x3d\x4d\x36\x43\x3f\xfe\x68\x43\x8d\x25\xe5\x4c\x07\x3a\x53\xff\xa0\x57\x8e\xc0\x7c\x12\x9f\xe4\xd1\xaf\xbe\xfb\xd1\x96\x77\xbc\xad\x52\xb6\x8f\x5d\xa4\xad\x3b\x77\x0c\x67\x6b\xfd\xf4\x63\xc4\xc9\x01\x08\xf2\xdd\x4f\xf6\x7e\x38\x1b\x58\xeb\x87\x9f\xec\xe7\x7e\xbf\x1f\x71\xf2\x23\x08\xf2\xfd\xf7\xee\xfb\x94\xce\xe2\xf5\x42\x39\x56\xd8\x49\xcc\x35\x87\x31\x41\x8c\x78\x53\xf7\x01\xc6\xde\xdd\x60\x42\x7a\x83\xc9\xdd\x38\x8f\x22\xbd\xd6\xea\x6d\xd1\x9d\x09\xc6\x77\xbf\xfb\x31\x4d\xd7\xf7\x44\x69\x24\x1e\x5d\x56\xb1\x4c\xe8\x53\xae\x10\x03\xee\x6f\xf2\xea\x24\x26\x80\xca\xa1\x42\x7e\xba\xa0\xbd\xe4\x28\x68\xf5\x44\x3f\xc0\x69\x6a\x5e\x7a\x17\xe6\x59\x3f\x76\x7a\x5f\xfa\x01\xc6\x85\x8a\x7f\xc6\xe1\xa8\xe9\x72\xdc\xad\xc0\xe4\xfd\x61\x2f\x32\x74\xae\x64\xd8\xac\x88\x70\x47\x3c\x0c\xd1\x05\x1f\xd6\xa2\x08\x70\x7f\x9a\xdc\x49\x54\x26\x2e\x91\xef\x6c\x9b\xac\x90\xc4\x78\x38\xe1\x86\xf3\x2e\x39\xba\xd6\x6b\x06\x83\x84\x23\x8e\x23\xf3\x92\xc1\x29\x27\xf1\x70\xce\xd1\x92\xe3\x28\x78\x7e\xf8\xee\xfc\xed\xe1\xf1\x9b\x23\x78\xfe\xf4\xc4\x3d\x9d\xc4\x27\x70\x72\xf4\xd8\xc4\x08\x3e\x7f\x7a\xf2\xe8\xe9\xc9\xd3\xd7\xef\xe1\xc5\xe9\xd9\xd3\x6a\xca\xd1\x8b\xb3\xa7\xc7\xa7\x27\xc0\x92\x47\x8c\x33\x45\x81\x25\x4f\xb9\xa2\x97\x54\x82\x09\x88\x0e\x2c\x39\x8b\x67\xd4\xa7\xe9\xa6\xce\x0e\x1f\xe9\x0a\x5e\x1f\x3d\x3e\x7a\x65\x5a\xac\x24\x98\x29\x79\xb4\x10\xb1\x02\x3f\x3b\x45\x9d\x81\xf7\xc9\x85\x00\xc3\x39\x27\xbd\xc1\xa9\x0f\x0e\x7b\xef\x9c\x0f\xce\x79\xa7\x83\xaf\xd1\x92\xc3\x19\x27\xa7\x7c\x74\xce\xc7\x36\x66\xd1\x91\x4e\xc1\x61\x78\xc5\xed\x23\x4c\xb9\xcd\x85\xf1\xe0\xa8\xb4\x48\xc9\x25\x87\x4b\x5e\xd1\x3d\x8f\x38\x50\x85\x04\xe4\xc8\x70\xc4\xad\x6b\xc8\x47\xae\x25\xf9\x8f\x7c\xb4\x15\x1f\x72\x4c\x82\xaf\x81\xa1\xe6\x5f\x34\x35\x75\xd1\x34\xbf\x8e\x03\x42\x3c\xd1\xfa\xc8\x31\x1c\xf2\x86\xd0\x92\x9f\xb8\x16\xae\x1c\xa2\x18\x42\xb1\x2d\xa0\xe4\x88\x94\x21\x8c\xe1\x05\x27\x5f\xf8\x70\xb5\x1d\x87\x44\x53\x91\x41\x3d\xce\x86\x1a\x06\x6f\x72\x07\xec\xc8\x85\x1a\x54\xc3\xe0\x64\xbd\x58\x04\x51\x9d\xb8\xa0\xad\x33\x5d\x45\xc4\x4f\x63\x1e\x29\xd4\x8b\x0c\x79\xc7\x31\xcd\xf5\x0f\x39\xc6\x43\x19\x7d\xe2\xc3\x15\xa2\x38\x3f\x93\x4a\x08\xe2\x44\xa7\x34\xef\x5e\x5b\x9f\x66\x4a\x87\x25\x10\x44\x3c\x83\x63\x33\xc4\x52\x94\xd4\x6d\xaf\x86\x1c\xcc\x41\xe7\x85\x13\x26\x3a\xc1\x38\xc8\x06\x5f\x78\x9a\x52\xd5\xa0\x4a\x15\xb1\x7c\x8e\x79\x25\x46\x8d\x99\xb9\x57\x9a\x92\xbb\x8d\x29\x78\xb0\xcd\x94\xf3\xd8\x16\x36\x54\x35\x55\x46\x5b\x34\x02\x83\x2c\x47\xdd\x7c\xcd\x6b\xf1\x0e\x4e\xb6\xeb\xd2\xda\x03\xaa\x68\xfc\x74\x3b\xbe\x8b\xb9\x2e\x43\x4a\x3b\x44\x24\x87\xb2\x13\xb4\xcc\xe1\x90\x4e\xc0\xf8\x95\x98\x58\x17\xcf\x72\xd3\x4f\xb7\x74\xa2\x37\xbc\x6e\x03\x82\xe7\x8d\xcc\xb6\x70\x84\x0d\x43\xe4\xa5\x18\x7b\x95\xe7\x1b\x3e\x7a\xca\xc7\xe6\xce\xc4\x0c\x6e\x6d\x35\xf1\x90\x37\x5d\x7b\xd6\x2e\x5d\x00\x39\xba\xa5\x75\x0d\x55\xd7\x35\x1e\xc9\x91\x9e\x38\x3c\xce\xe0\xd1\xb6\x7e\x56\xc1\x3c\x3e\xa4\x48\x6b\xac\xa3\xde\x18\xe4\xa8\x3f\xc6\x11\x45\xf9\xc1\xd2\xfc\x8a\x46\xd5\xf5\xee\x03\x06\x92\xf9\x90\x44\x18\x1e\x22\x91\x5f\x0a\x06\x34\xcb\xe0\x3e\x6f\xbe\x56\xa4\x86\xfc\x76\x2f\x44\xac\x56\x74\x4a\x54\x7e\x69\xfd\x7a\xa1\x08\xcd\x76\xdc\x26\x52\x5c\xc5\x1d\xcb\x96\x63\xe7\x30\x03\x1b\x2c\x53\x52\xeb\x87\x35\x3c\x88\x2c\x73\x67\x38\x26\x6a\xe0\xaf\x9a\x6d\x88\x27\x3a\x21\x0f\xb9\xb9\xca\x6c\x0b\x3d\x6c\x6c\x74\x1f\x02\xc8\x40\xf6\x62\x41\x6d\x08\xa0\xe7\x5c\xf3\x41\x83\xb3\x6b\xd2\x83\x84\x24\xaa\xb8\xfe\x7e\x90\xdc\x5b\x0f\xd6\x8e\x7b\xce\x88\x18\xce\xd1\x21\x5a\x11\x35\x5a\x8f\x0d\x84\x57\x06\xc2\x73\x64\x12\x70\x18\xce\xaa\x88\xea\xc5\xb3\xf2\x86\x2e\x35\x37\x2f\xc4\x64\x92\xdf\xb6\xa4\x9b\x5e\x10\x7b\x13\xf8\xa0\x8d\x56\xc4\xdd\xde\x17\x63\x6c\x6e\x4e\x36\xb7\x45\xd4\x0f\x96\xa2\x19\x79\xc4\x51\x0c\x73\x58\x59\x8e\x07\xc2\x74\xe0\xef\xe8\x03\x36\xf3\xd5\x84\xe2\x2e\x4f\xcf\x28\xd3\x18\xc3\xe7\x2d\x54\x7e\xcc\x49\xbb\x6f\x4c\x35\x7a\xee\xbe\x72\xd2\x83\xb7\x9c\x38\x33\x51\x9d\xfe\x6c\xac\x36\xd0\xfe\xca\x3b\x9d\x2c\x03\x9b\x58\xce\xa6\x6b\xeb\x65\xd9\xe0\x2d\x1f\x7d\xe6\xbb\x2f\x3b\xb7\xeb\x73\x26\xc5\x12\xbd\xe5\x15\x4d\xc9\xce\xf8\xc1\xf6\x6e\xfc\x13\x0e\xef\x38\x3c\xe3\xf0\xbe\x4e\x6b\x7e\xe6\x64\x1f\xb1\xd5\x5c\x70\x9a\xb2\x95\x98\xa6\x6c\x15\x4f\x71\xf7\x6f\xf1\x6a\xb5\xa0\xd7\xf4\xe2\x13\x53\xfb\xcc\xde\x5c\xf5\x90\x62\x78\xa9\x69\xde\xc2\x91\x12\xf8\x45\xbf\x25\x54\x3d\x5d\x2e\xe9\x94\xc5\x8a\xc2\xaf\x3a\x65\xb2\xa0\xb1\x2c\xd2\x94\x28\x05\xa2\xa1\xfa\xe5\x39\x4d\x92\xf8\x92\x3e\x98\xc7\x9c\xd3\x05\x48\x9d\xf6\xd0\xfb\x46\x71\x41\x7a\x20\x04\xd9\x64\xc0\x44\x9d\x52\x08\x51\xbb\x57\x4f\x63\xba\x5b\x89\x42\x8c\xd4\x78\xe0\x8e\xc4\x9a\x17\x30\x51\xa5\x21\x16\xdf\xd4\x16\xf0\x86\x09\x64\x02\xf2\x4f\x6a\xed\x09\x64\x6f\x44\xc0\x19\xac\xab\x9f\x44\x77\x25\x12\xe5\xc6\x81\x54\x27\x08\xe0\xa5\x13\x12\x26\x62\xd1\x09\xf6\xf7\x83\xce\x4b\xde\x9d\x8b\x44\xe1\x6c\xf0\x0b\x0f\xc3\x5f\x79\x9a\xa2\x5f\xaa\xa4\xaf\xb6\xe3\xd3\x10\xfa\x48\x0e\xfc\xf5\xf3\xa5\x3d\x1f\x13\xfa\xc8\x87\xbd\x10\xa3\x4e\x87\x57\xaf\xc6\x6f\xde\x6d\x57\xd1\xa3\xa2\x69\xec\x76\x65\x7c\x90\x3d\x9c\xc1\x13\x8e\xb8\xc0\xc0\x45\xa6\x67\xb1\xdc\xcd\x32\x48\x33\x13\xc5\x4d\x4f\xa5\xbd\x10\x40\xe0\xe1\x93\xda\x01\x50\x51\xf8\x0c\xc7\xc2\x04\x8c\x88\xa4\x08\x43\x29\xba\x5c\x5c\xd7\x73\xdb\xd4\x3c\x23\x15\x61\xd8\xfe\x99\x0f\xd1\x33\x4e\xd0\x3b\x6e\x7c\xac\xa9\xc0\x5d\x4d\x34\x0f\xe0\x1d\x37\x0f\xfd\xae\xe0\x4b\x0b\x7a\x32\x11\xf0\x84\x6b\x2a\xf9\x8c\x97\xa7\x44\xe3\x7a\x1f\xe3\xa8\x2d\xba\xf1\x74\x7a\x74\x45\x6d\xcc\x04\xca\xa9\x4c\xd3\x06\x6b\x51\xa9\x68\x9a\x8a\x2e\x5b\xea\x76\xce\x8c\x91\x35\x49\x53\x86\xd6\x02\xeb\x72\x6c\x41\x23\x2d\xa2\x95\xe6\x5a\x0f\x28\x10\x5c\xd2\x78\x7a\x63\xf6\x99\x27\xf3\x98\x5f\x9a\x5b\xf7\x4e\x51\x60\xed\xb4\x41\x35\x26\x7a\x2d\x60\x7e\x29\x1b\xee\x6e\xd7\x54\x9e\xd9\x37\xaa\x72\x98\xcf\x1a\x44\x1c\xf6\x56\xa4\xbb\x84\xaa\xd7\x6c\x49\xc5\x5a\x59\xd0\x42\x0f\x67\x11\x7a\xc2\xc9\x5a\xc0\x36\x48\x50\xe0\xc0\x19\xc0\x44\x68\x2d\xd2\x99\xe5\x13\x01\x33\x01\x0b\x01\x2b\x01\x73\x01\x57\x02\x6e\x04\x2c\x05\x5c\x0a\x7b\x6d\xd8\x2f\x1c\xcc\x5a\x8f\x7e\xe5\x19\x5c\xd8\x98\x26\xd7\x82\x5c\x1a\xa2\x00\x67\x66\xa9\x3b\x3f\xad\xd3\x0b\xe3\x3a\x20\x35\x74\x7f\xa1\x17\xcf\x98\xaa\x7f\x81\xa3\x32\x9d\x38\x15\x25\xe1\xea\x5c\x90\x0a\xd6\x1d\x09\x0c\x1f\x05\xb9\x10\x5a\xe8\xfe\xbc\xa6\x6b\xfa\x9c\x4d\xa4\x50\x71\xf2\x29\xc0\xf0\x45\x90\x8f\x22\x0c\x3f\x0a\xcb\x11\x06\x5f\x44\x9a\xa2\x44\x90\x6d\x63\xbb\x89\x64\x71\x2e\xcc\x36\xfd\x91\x70\x37\x30\x18\x9f\x3a\xfa\x85\x29\x84\x07\x33\x31\xc0\x1b\x4a\x66\xa2\x3b\xe3\x30\x13\xfa\xc1\xb0\x27\x4d\xf1\x69\xf9\x4e\x5f\x4b\x79\x67\x62\xb8\x12\x08\x47\x0b\xe1\xad\x4c\x2a\xcb\x4a\x2f\xa6\x66\xae\xa8\x34\x17\xae\xe8\xcc\xe5\x4e\x1d\x95\x16\x4e\x22\x70\x16\x9d\xf9\xc5\x30\x17\xc6\x10\x29\x8a\xcb\x22\xec\xc1\x8b\xd7\xf4\x8b\x3a\x11\x53\x8a\x82\xc0\x04\xfb\x6e\x9d\x09\x5d\xb2\x2b\x2c\x48\xd1\x95\x80\x8d\x56\x74\xe3\x89\xa2\xf2\x61\xac\x62\x7b\x9c\xa7\xda\xec\x95\xb0\xb7\xbe\xe8\x46\xe6\x22\xc3\xd1\xa9\x08\xc3\x53\xe1\x9d\x42\x87\xe8\x46\x90\xe2\x15\x79\x1b\xfc\x52\x90\x1b\xeb\x4a\x5a\xab\x6f\xe9\x04\xa7\x1b\x01\x7a\x14\x38\xaa\x7e\xbe\x16\xfe\x48\x97\xf9\x6a\xf0\xec\x50\xc0\x27\x01\x2f\x04\x1c\x0b\x78\x25\x88\x9e\xb0\x6d\x41\x6b\x33\xe3\x91\x32\xf7\x58\xfb\xfb\xbd\x06\x0b\x3d\x75\x0b\x91\x5f\x58\x3e\xd3\x33\x3d\x13\x84\x82\x9e\x06\x0c\x0b\x41\x68\x06\x0f\x44\x93\xf9\xc4\xfa\x3b\xac\x2c\x86\x19\x3a\xa3\x2a\xfb\xfb\xd6\xe7\xb4\xb8\x6a\xb1\x14\x5e\xae\xe1\x2a\xce\xfb\xf1\xd4\xfb\xa8\xd5\x22\xa1\x52\x13\x3e\x9d\xe7\x3e\x86\x0e\x8e\x84\x52\x44\xf3\x24\x2d\xd3\xe8\x14\x13\xfa\x56\xec\xb8\x78\x41\xf7\xf1\x81\xe3\x54\x27\x62\x3b\xa8\x98\xb9\x73\x62\x89\xa8\x09\x0f\x56\xd6\x4f\x4b\x77\xab\x53\x77\x68\xe8\xb5\xe8\xce\x8a\x9b\xbb\x50\x0f\xa4\xef\x18\xd6\xdd\x92\x1e\x30\x19\x3c\xad\x42\xaf\x90\xb1\x37\xc6\xf9\x2c\x6a\xf7\xdd\xde\xaf\xd2\xbc\xb6\x76\xbb\x83\xcf\xe3\xf7\x87\x55\x96\x65\xf0\x26\xa7\x10\xcf\x45\x4d\x1a\xb9\x25\x48\xe0\xc0\x18\xc0\x43\xe1\xef\xec\x7b\x24\xbc\x69\xfa\xbe\xa8\x9a\xa6\x6f\x09\x0c\x9f\x05\x79\xc5\xe1\xb1\x26\x18\xf9\x8c\xc0\x57\x51\xbe\x4b\xf7\x6d\x99\xb4\x3c\x11\x26\x76\xde\x8c\x2a\x13\x5b\xeb\x9d\x30\xd0\x80\x67\x82\xbc\x13\xf0\xbe\x46\x6a\xde\x0a\x0c\x3f\x0b\xd2\x6e\xa3\xaf\x22\x0c\xbf\x0a\x7f\xc5\xee\x95\x39\xe5\x2a\x72\xf7\x08\x93\x80\xe1\xa5\x20\x87\x0a\xdd\x12\x50\x8b\xac\xd6\x46\xcf\xd1\x67\x81\xdb\xb9\x76\xff\x59\x60\x6c\xbe\xdc\xb9\x43\x08\x79\x4c\x8b\xa8\x6b\x3a\xf7\x7b\x51\x56\x7e\x73\x2e\xe5\x40\xf3\xca\xe0\x0b\x13\xdc\x36\xea\x4b\x66\x6c\x86\x6c\x50\xbc\xc6\x8b\x47\x3f\xe7\xe7\xf4\xdb\x7d\x17\xda\xed\x73\xb1\xac\xfb\x18\x6a\xfe\x46\xa8\x76\xb6\xa8\xfa\x9a\x47\xcb\x45\x6a\x2b\xc0\xde\x73\x31\x26\x14\xda\x48\xd5\xbd\x33\x4d\xc1\x8a\x58\xae\x97\xc5\x2f\x82\xbc\x14\x69\xda\xde\x42\xe8\x36\x0d\xc3\xf6\x63\x5e\xed\xb5\x2c\x4b\xdc\xc6\xbe\xb2\x43\x5a\xfe\xa6\x14\x2e\x8d\xa4\x9d\x65\xa0\x10\xc7\xdb\x3b\xa0\x32\xab\xaa\x7a\x9f\x45\xd7\x5d\x24\x5e\xf7\x86\xb7\xb0\xc0\x18\x7e\x6d\xa0\x32\x79\x9c\x6c\xb3\x51\xda\x24\x78\x20\xb3\x9b\x31\xa7\xe6\x92\x2a\x9a\x81\x62\x8d\xaa\x3f\xed\x72\xa1\xd8\x8c\xd1\x29\xde\x14\xcf\x3e\x24\xa4\x39\xda\x40\x9d\x3b\xf0\xe0\x95\xa8\x7a\x51\xf8\x20\x0e\xc4\x45\x98\x04\x46\xfa\x84\x78\xa7\xb8\x98\xf4\x06\xb9\x7d\x2c\x1e\xb8\xd3\x52\x6e\x53\x93\x8f\xe2\x4e\x67\x0c\x0b\xc2\x86\xb3\xae\xf8\x14\xcd\xba\xb3\x98\x2d\x60\x45\x66\x1e\x6f\x60\x6e\x9e\x4d\x14\xfd\x29\x99\x39\x16\x6a\xe6\x67\x31\x44\x2c\x4d\xd1\x01\x21\xa6\x7b\x0e\x65\xc3\x50\x30\xeb\x79\x58\x4a\x24\x7d\x0c\xed\x1e\x21\x64\x31\x9c\x10\x11\xa1\x69\x18\x4e\x3d\xa3\x84\x09\x59\x20\x81\x61\x1a\x86\x68\xea\xf8\x32\x24\xa4\xdd\x33\xd7\xdc\x13\x32\xf3\xa4\x6a\x38\x47\x8f\x05\xf2\xe4\x63\x6f\x32\x8f\x19\x6f\x4d\x6e\x26\x5a\xc3\xc5\x11\x5a\x93\x5f\x85\x56\x71\x87\x6b\xcb\x7f\x26\x5a\xbd\xc6\xd1\x4a\xa7\x45\x73\x24\x4a\x58\x30\x0d\xc3\x76\x62\xba\x60\x5b\x33\xb1\xba\xb3\x12\x8c\xb5\xb8\x5e\x9e\x86\x3e\xc8\x30\x6c\x57\x46\x29\xed\x28\xad\xe7\x2d\xdd\x9e\x55\xbb\x63\xc3\x06\x3f\x8b\x21\x42\x9c\x54\x09\x0b\x0a\xcc\x8f\x96\x07\x3d\x83\xa2\xc0\x75\xfb\x89\xe0\x44\x02\x37\x47\xfc\x6d\x56\x05\xed\xbe\x39\xe1\x59\xa3\x45\x88\x63\x1c\x71\xb2\x71\x15\x44\x14\x6c\xf1\x48\x66\x80\x18\x11\xa3\x40\xf0\xa0\xa3\xc6\x78\xc8\x10\xc7\x51\xb0\xe6\xf6\x38\xcc\x34\x1f\x44\x60\xe3\x0d\x34\xf9\xbc\x09\xb3\xe6\xc5\x82\x0e\xcc\xe9\x5b\x43\xe5\xc3\x10\xf5\x09\xd9\x32\x61\x0f\xdd\x67\xa4\x70\x94\x3f\x02\xc5\x38\x43\xc1\x1b\xdf\x66\xcb\xf5\xb2\x55\x34\x6e\x9c\x6f\x25\xab\xb1\xb9\x37\xb9\xf4\xb0\xe5\xea\x69\x8e\x72\x59\x89\x8f\xcd\x10\x67\x86\x11\x22\x49\x9e\x56\xd7\xc3\x7b\x31\x7c\x2b\xdc\x61\x95\x7c\xcc\xaf\x8a\x66\x39\x28\x1c\x51\x86\x9a\x00\x02\x5a\x2c\x30\x71\xbb\x4b\xb8\xfb\x5e\xa4\xa9\x69\x6d\x78\x10\xf5\xc1\x0d\xd1\x5b\x5f\xdc\x7d\xdb\xc6\xc3\x97\xb3\x26\x35\xb4\x6f\x1c\x93\x4a\x98\xd3\xf6\xc1\x11\x32\x10\x7f\x6e\xf8\xe5\x21\xe5\x15\x3d\xb1\x9d\x0f\xfc\x70\xf2\x0f\xf3\xfc\x03\x38\x78\xd9\xb8\x24\xac\x8e\xa4\x25\xe7\x8f\xfc\x83\xd0\x8c\x41\x7f\x13\x1a\x12\x19\xc4\x4d\x85\xa8\xb1\xd7\xa4\x29\xb2\x0f\x5a\x76\x75\x11\x75\xb1\x6f\x92\x48\x70\x14\x88\x1c\x80\x32\x6b\xc5\xec\xcb\x67\x30\x69\xaa\xd1\xd2\x40\x5d\x99\xaf\xbd\x5c\xa9\x21\x37\xce\xe9\xc2\xcb\x66\x25\x52\xd0\x9a\x18\x2f\x94\x0b\x8d\x5d\x86\x68\x4d\x5b\x4c\x25\x74\x31\x0b\xfc\x99\xe5\x5f\x05\x92\x78\x20\x86\x35\xd2\xe9\x38\x8c\xdf\xc4\x35\xcd\x08\xef\xa2\xc2\x18\x9a\x30\x30\x16\x5d\xac\x5f\x62\xff\x52\xba\xed\x3c\x66\xf6\x56\x07\x1b\x94\x12\x47\x68\x7b\xf4\xfd\x7c\xf4\xfd\xad\x92\x79\xcb\xae\x86\x6c\xf0\x52\x0b\xbc\x9f\xab\x9c\xe6\xc4\x6d\xb4\x7f\x16\xa0\xa5\x21\x7b\x5b\xd3\xa1\x28\x79\x28\xb8\x7b\xdf\x1e\x0a\xf7\x6a\xce\x89\x20\x37\x00\x7b\x33\x83\x1f\x81\x7d\x2b\xd1\x42\xdd\x11\x1b\x25\xdf\xc8\x9d\xe8\xb0\xda\xf8\x23\x51\xde\xe5\xbf\x25\xfc\x8e\x37\x78\xe2\xa8\x9f\x2d\x3a\xeb\xa7\x9c\x82\x46\xa3\x31\xe4\x18\xa9\xbf\xd8\xf3\x6e\x5e\x4e\x74\x02\x7e\x25\xb4\x3e\x79\xc0\xd1\x67\x51\xb2\x4b\x6f\x34\xdf\x8c\x1a\xc8\x93\xb5\xa7\x92\xfb\x6e\xbc\x10\x93\x77\x02\x21\x49\x3e\x8b\xe2\x16\x2b\x24\xc8\xa1\x8b\x55\x5f\xbd\x7c\xc9\xee\x77\x20\x4e\x0e\x91\xc0\xa3\xf7\x7c\x8c\x87\x32\xa2\x54\x93\xd3\x22\xda\x66\x57\x7c\x22\x4d\x77\x6f\xa5\xa9\x82\xd8\x30\xc9\xa6\xb8\x29\x34\x0c\x29\xc4\x8e\x47\x12\xbb\x6a\xed\x8b\x77\x43\x60\x6e\xe9\x6b\xec\x66\x05\xbf\x71\x16\x20\x0c\xbd\x36\x61\x16\x71\xc2\x50\xb9\x99\x61\xc6\x01\x2d\x2e\x24\xf6\x49\xf5\x50\x71\x2d\xd4\x9b\x11\xc9\xbc\x42\x6a\xa2\x85\x7f\xda\x56\x8d\x8d\x3e\x74\x28\xc0\x22\x0d\xae\xea\x4a\xaa\xaa\xc8\xf8\x85\x50\xd3\x66\xfc\x92\xa0\x46\xa5\xe9\xce\xc8\xbb\x46\x2b\x9c\x5e\xb3\x9f\x45\x9a\xea\xdf\x17\x62\xa8\xdb\xfd\xa4\x9b\x8c\x9e\x19\x4d\x07\x1a\xc0\xf8\x4a\xaf\xfb\x63\x2d\xf4\x97\x7c\x41\x8d\x22\x4a\x15\x7a\x55\xbd\x8c\x7a\x4e\xf9\x96\x67\x4a\x71\xfc\xaa\x6c\x0c\xfe\x2c\xea\xee\xdd\xc7\xf9\x5a\x77\x9c\xdc\xc2\xce\x47\xb5\x28\x6d\x07\x35\xf5\xf2\x89\x08\xc3\xea\x3d\x06\xd5\xa8\x93\x3e\xea\x6d\x2f\x83\x8d\x51\x45\x1a\x63\xae\x0a\xf4\x59\xc0\x13\xef\x5f\x2d\x4a\x77\x90\x19\x8a\xf2\x07\x57\x25\xbc\x14\x19\x6c\x1c\x15\x8c\x3e\x0b\xeb\xb2\x68\xe8\x84\xc1\x99\x6d\x1d\x5b\xd8\x93\x1e\xe4\x45\x77\x36\x88\xc3\x50\xcb\xdf\x74\xf4\x9a\x8f\xc3\x50\x22\x0a\xaf\xf9\x9f\xbd\x07\xc2\x18\xaa\x33\x9c\x19\xfd\xec\x85\xd1\xb7\xcc\x53\xe1\x93\x74\x4b\xd4\x83\xcf\x9a\xce\x5a\xe4\x69\xb8\x30\xe1\x9d\x27\x5e\xa5\x03\x94\x36\x04\x85\x9e\xa2\x1c\x9f\x81\xe6\xeb\x20\xfb\x73\xed\x19\x24\xde\x01\xfb\xdc\x93\xee\x0f\xaa\xfa\x45\x57\x15\x2f\x16\x0d\xfd\x36\x55\x48\xdd\x7d\x73\x73\x4f\xae\x66\x83\x30\xcf\x46\x70\x66\x75\x19\xc5\x85\x28\xa1\x28\x3f\x9a\x8b\xcd\xcd\xd3\x5a\x5a\x87\x09\xe9\x0f\xee\x6b\x34\xdc\xda\x8c\x5a\x93\xb8\xd3\xd1\xb2\x71\x7f\xe0\x6e\x94\xf6\xc6\x9a\x49\xa7\xe3\x63\x72\x6b\x42\x5e\xd7\xcb\x14\xde\x24\x69\x8a\x12\x43\x76\x46\xeb\x31\x51\xb0\xb7\x37\x49\x53\x8e\x98\x56\x6e\xec\x59\xd6\x22\x29\x2b\xdd\x53\xed\x65\x3f\x81\x98\x13\x26\xca\xc6\x03\x19\x4f\xe8\x9f\x03\x8a\x01\x84\x68\x02\x84\xa8\x02\xa2\x61\xec\xa2\x3e\xb2\x02\xca\xdc\x1d\x7f\xcb\xcd\xe5\xbe\xbf\x1c\x89\xed\xfe\xfa\xc0\xc6\x6c\x9b\x20\x1e\xe6\xde\x67\x41\xc9\x41\xd8\xae\x3c\xe7\x97\x6f\xae\x7d\xec\xb2\x4b\x2e\x24\x7d\x10\x27\xd4\x25\xb3\xc0\x06\xa7\x5c\x28\xb6\x60\xdc\xa7\x2e\x4d\xea\x54\xa8\xc3\x85\x2f\x9f\x98\xa4\x35\x67\x5a\x69\x77\x69\x6b\x93\x96\x28\x36\xf9\x74\xe3\x92\x6e\x02\x0c\xb4\x14\x21\x27\x61\x95\xc3\x76\xce\x5b\xca\x50\x29\x13\x96\x97\xc1\x82\xc1\x8a\x91\xcd\x9b\x93\xb3\x37\x2f\x5e\x9c\xbe\x7a\x7d\xf4\xf0\xfc\x7d\xd4\x74\x27\x44\xc2\x50\x10\x07\xa0\x9b\x28\xc6\xb8\x88\x13\x65\xae\x96\x23\x07\xe0\x36\x6a\xbb\xf4\x0b\x9d\xa0\x20\xbe\x98\x4c\x03\x83\x1a\xf7\x5f\x9d\x3e\x3b\x3a\x39\x7f\x70\xf8\xea\xe8\xf5\xce\x9a\xff\x49\x06\x10\x5c\xfe\xc9\xba\x13\x25\x03\x2b\x97\xce\x99\xf3\x00\x2b\x51\x7b\x9d\x07\xa6\xcc\x19\x53\xb6\x0f\xe8\xc1\x15\x23\x73\x06\x37\x8c\xa0\x19\x23\xfb\xf1\x3e\x2c\x18\xd9\xbf\xf8\xdb\xfe\x25\xcc\x5d\x10\xaa\x19\x83\x20\x0e\x70\xfe\xbe\x70\xef\xbd\x36\x21\x33\x56\xf4\x2c\x4d\x75\xca\xa2\x94\x82\x61\xc9\xc8\x8a\x75\x2b\xf0\x4c\xd3\x15\xeb\x96\xc1\x00\x97\x8c\xe4\x16\xc3\x7d\x84\x87\xc3\x7d\x37\xb4\x00\x8f\xfa\xe3\x01\xba\x61\x69\x7a\xc9\xd2\x74\xc9\xb4\x9e\x72\xc5\x76\xfb\x78\xd9\xf5\x12\x93\xa5\xbd\x59\xda\x20\x03\x4c\xc8\xda\xf5\x9c\x61\x13\x8b\x23\x31\x91\x9e\x21\x21\x3d\x98\x11\x55\xba\xcb\x08\xed\x69\xbd\x0c\x4d\xc8\x24\xf7\x6b\x0b\x6e\x02\xe3\xd8\x96\x07\x41\xd2\xc8\x1b\x86\x68\xe2\xd0\x78\x56\x5c\x50\xe3\xdc\xa9\x2a\xe3\x2f\xbd\xdc\xeb\x85\x21\x6a\xb3\x02\xbf\xd3\x94\x95\x91\x3d\xf8\xa0\xe5\x23\xa2\x46\xa5\x32\x7b\x7d\x73\x63\xe5\x9a\x04\x68\x18\xb5\x82\xce\xba\x13\xe0\x00\x66\x24\x68\x05\x9d\x19\x24\x9d\x8e\xbf\x3a\x37\x77\x09\x44\xc3\xc8\x67\x9b\x60\x0c\x97\xcc\x68\x76\x95\x2c\xe6\xfb\x2d\x34\x6c\x7f\xf8\x90\xb8\x6c\x37\xcc\x28\x08\x95\xae\x73\xe2\x27\x3c\x1e\xca\x88\xc1\x0c\x43\x3c\xe4\x43\xa4\x55\xea\xd5\x5a\x11\xf7\xeb\x46\x9d\x60\xe0\xa3\xde\x98\xe8\x7f\xa5\x24\x0b\xb6\x72\xc5\x65\x90\x74\x6c\x76\xb7\x77\x1e\x95\xbe\x90\x5e\xa4\xfb\xa4\xe5\x97\x72\x2a\x73\x74\x64\xe8\x2a\xee\x94\xca\x47\xd4\x0e\xd7\xc4\x74\xf4\x07\xaa\xc3\x70\xea\x06\xc1\x8d\x83\x03\xd4\x0d\x3e\x82\xf4\x07\xe2\x6e\x5d\x15\xdf\x3b\x18\x88\x4e\x07\xe7\x32\x70\xb1\xa5\x28\xc6\x61\x88\xf8\x48\x8c\xfd\xd5\xa1\xf6\x96\x30\x17\x68\x95\x91\x2b\x56\x09\x1f\x6f\x81\xbe\x7d\x51\xc0\x7e\xd7\xe2\x78\x9b\x90\x0b\x96\xc1\x46\x3f\x47\x17\xcc\xd5\x73\xdd\xa8\xff\x16\x4e\x9b\x25\x47\x56\x60\x15\xd7\x4d\x88\xc9\x44\x21\x89\x4d\xfc\x19\x7f\x1a\xce\xe1\xf7\xdd\x5e\x9a\xc6\xf7\xc8\x64\xa8\x86\x41\xe0\xe4\xe8\x08\xf1\xaa\x8b\x5f\x8c\xf1\xdd\xef\xbf\x3f\xf8\xe9\x4e\x9a\xf2\x7b\xdf\xdf\xb9\xdd\xff\x29\x4d\xe3\x8e\x5e\x16\x93\x34\x45\xa2\x96\xb9\xd3\xd7\xd9\xef\xdc\x3e\xe8\xa5\xa9\xb8\xf7\xfd\x0f\xb7\xbf\xbb\x3d\x54\x43\xe6\x4f\x64\xc5\x38\xe2\x91\x7e\xb7\x08\x11\x43\xdc\x39\xc0\x91\xd8\x33\x25\x3a\x88\xef\x99\x96\xee\xde\xed\xf7\x70\xe7\xce\xf7\xdf\xdf\xbe\x93\x65\x70\xc6\xc8\x66\x62\xaa\x8f\xae\x19\xd2\xc2\x97\xad\xcc\xbc\xf5\x70\x06\x47\x8c\x9c\xf9\x16\xe0\x94\x79\x7b\xf7\x39\xab\x5f\xc5\x69\xc0\x52\xf2\xc5\x1e\x48\xee\x6e\xf8\x85\x60\xfb\xe6\x31\x85\x37\xa7\xac\xe2\x88\x5d\xaf\x00\xac\x3f\x57\x94\x2f\x78\xef\x8e\xdd\xec\x87\x0d\x94\x9c\x33\xc7\x0b\xa5\xb1\x22\x9a\xa6\xb9\x0f\xa8\x96\x8b\xd4\xf7\x88\x8f\xac\x34\x6c\x76\xb5\x8e\x90\x22\x47\xcc\x1c\xf6\x00\x57\xb8\x93\x87\x6a\xf5\xee\xd9\x2a\x77\xa1\xce\x63\x74\x7d\x64\xb5\x4d\x83\x2f\xac\x7e\x72\xcc\xf2\x9c\xfd\xee\x7e\xc1\x69\x34\x2a\x6e\x73\xf5\xe2\x32\x3d\xd5\xbd\x94\x62\xbd\x4a\xc8\x26\x8e\x82\x1f\x82\x0c\x54\x06\xc1\x0f\x9a\x74\x05\x41\x4e\x36\x15\x04\xb7\xee\xc6\xf7\x2c\xcf\x3b\x64\x24\xb8\xd5\x0b\x08\x21\x41\x5c\x64\xd9\xef\xee\x83\x4e\xc6\xf0\xc9\xf6\xd3\x7d\x08\x30\xbc\x60\xa4\xdd\xde\xef\xee\x8f\x3e\xb1\x71\x18\x9a\xa0\x50\xee\xcd\x72\x5d\x53\xea\x78\xd7\x60\xd0\x30\xc2\xfb\xc6\xf9\x5d\x0f\x65\xb0\x3d\xa2\x5c\x30\x2e\x9d\xc5\x2c\x5d\x59\xec\x8c\xe7\x41\x7c\xe1\x3d\x24\xf3\xed\x9f\xd6\x81\xf1\xf6\xb6\x90\x4f\xd3\x20\xd6\xc3\x96\xa3\xde\x38\x4d\x83\x0b\xfb\xdc\x1f\xeb\x21\xbf\x6a\xb2\xcd\x58\x19\xcd\x5e\x26\x17\x37\x75\x9e\x96\x8e\xc8\xd2\x91\x68\x72\x6c\xf9\x21\x83\x1f\xda\x24\x08\x46\x6a\xec\x42\x17\x4e\x48\xbc\x75\x43\x8d\xad\xcc\x1c\x90\xda\x8f\xfd\xdc\x06\x66\x30\xce\x56\x89\xec\x69\xf8\xda\x8e\x84\x8d\xcc\xe2\x13\x46\x1f\x59\x53\x17\xa4\xce\x36\x5b\xc4\x97\x09\x09\x02\x90\xba\x9f\x7a\x76\xc4\x58\x0b\x88\xbb\x60\x6d\xac\x50\xe6\xc0\x9d\x2e\x60\xb6\x61\xdb\x54\x23\x2a\x9b\xa1\x76\x9c\xa6\xed\x49\x9a\xe6\x18\xe0\xba\xd8\xfe\xc2\xd2\xb4\x7d\xc8\xd2\xf4\x05\xc3\x69\x5a\xe9\x7f\xfb\x98\x79\x51\xde\x36\x0e\x09\x91\x48\x80\x81\x4c\x55\x8f\x85\xea\x85\xd6\x56\x26\x22\x9a\xf0\x0e\x35\xe4\xc4\xd0\x59\x8f\xbc\x49\x65\x5d\xb9\x25\x3b\xaa\x7d\xcd\x4f\x5e\xd1\xf2\x57\x73\x70\x61\xf3\xea\xe8\xc5\xf1\xe1\x83\xa3\xf3\x67\x47\x47\x2f\xce\xce\x6f\xf5\xa2\x43\x06\xaf\x8e\x1e\x1f\xbd\x7b\x71\xee\x3f\x9d\xbd\xb9\x7f\xf6\xfa\xe9\xeb\x37\xaf\x8f\xce\xce\xdf\x9c\x3c\x3c\x7a\xf4\xf4\xe4\xe8\xe1\xf9\x83\xc3\x17\xaf\xdf\xbc\x3a\x8a\x5e\xb0\x4c\x8b\x14\x89\xe6\x55\x0b\x92\x68\xe9\x87\x2a\x54\x97\xdd\x40\x69\x66\xac\x55\xf8\x9a\xb4\x07\x02\x0e\x08\xa1\xc3\xaa\x76\xee\xc6\xbd\xf0\x71\x96\x9c\xe9\xaa\xf1\x0e\xd9\x4a\x26\x9c\xe1\x8c\x87\xe1\xf1\x56\x3b\x1a\xdc\x41\x32\x8f\x97\x81\x3d\x4c\xff\xa0\x4c\x92\x5f\x6f\x9b\xf0\x3d\xe4\x3b\x48\x0e\x1f\x58\x21\xdc\x33\xed\x3e\xce\xe0\xa4\x6e\xbc\xf5\xe1\x1a\xcd\xfa\x6d\xbe\x78\x2c\x3f\x90\x98\x87\x8f\xa2\xd6\xa3\xdf\xb9\xbd\xe5\x96\x26\xbe\xbd\x05\x6d\x87\xd3\xd2\xb5\xb7\x96\x54\xcd\xc5\xb4\x65\x7b\x48\xa7\xad\x44\xe8\x14\x4d\xf7\x85\x9a\x53\xd9\x52\xf3\x98\xb7\x62\x1f\x8e\xad\x25\xa4\xb9\xbb\xa1\x90\xcc\x79\xa6\x1b\x75\x6c\xbe\x6d\x1c\x7d\x1a\xfc\x09\xed\xf7\xbf\x98\x16\x8d\x57\xee\xb4\x25\x78\x8b\xf1\x89\x58\xae\x62\xc5\x2e\x16\xb4\x25\xe9\x84\xb2\x2b\x73\xa9\x93\xab\xfa\x82\x15\x43\xcb\x06\xaf\x18\x0a\xcc\x15\x61\x01\xf4\xeb\xf8\xed\x21\x3c\xda\x3e\xd7\x71\xe5\x38\x10\x27\xd6\x5c\x47\x87\x8e\xf1\xd3\xe2\x82\xa6\xc2\x9d\x93\x0f\x79\x71\xa5\x7c\x54\x92\x1a\x29\xd6\x04\xc7\x71\x3e\xa9\x95\x8d\xba\x0c\xce\x89\x44\x3e\x22\x86\x0b\x4d\x68\xac\xd0\x1e\x4e\x6e\xc3\xc1\xd2\x40\xb3\x01\x9f\x4b\x2e\x79\x91\xb6\x70\xf2\x5d\x7e\xba\x80\x21\x01\xcc\x47\x9c\x14\x5e\xe5\x1b\x88\xb2\xa4\x98\xdf\xb2\x32\x81\xb5\x56\xfd\x13\xd2\x1b\xb8\x83\x96\x68\x42\x5c\x15\xd8\x6d\xd8\xe5\xf2\xfa\x64\xd4\x1b\xe3\xc1\x7a\x94\x8c\xc9\x0c\x0c\x8b\x99\x85\x21\x2a\x57\xfc\x9a\x21\x06\x89\x2a\xa7\x61\x88\x31\xd6\x72\xb7\xdf\xfe\xd4\xc2\x61\x32\xd4\xad\x45\xeb\x6c\xec\x19\xef\x53\xb6\xe5\x2c\xcc\x1a\xdc\xd3\x9f\x33\x12\x3b\xb8\x24\xf9\x20\x6e\xb1\xf2\x55\x31\x0f\x19\x11\xa3\x5b\x6c\x0c\x8f\x18\x79\xc8\xc2\xf0\x21\xab\x5e\x15\xf3\x88\x19\x93\xff\x23\x36\x7a\xca\xc6\x6d\x42\x9e\x33\x77\x53\xcc\x23\x06\x4f\x19\x3c\x67\x25\x03\xb5\xcd\x44\x9e\xb3\xcc\x96\x78\xc3\xcc\x4d\x7b\x8f\x18\xbc\x61\x70\x4b\xeb\x46\x52\x37\x95\x07\xb3\xbf\x6f\x7a\x12\x73\x6c\xb3\xdf\x37\x0d\xc4\x5c\x3f\x14\x8d\xdc\x67\xe0\x92\x2a\x0d\xdd\x67\x63\x97\x35\xb3\x97\xd1\x7c\xde\x02\xc9\xe3\x1d\xfc\x5b\x63\xdd\x9b\x57\xc7\x28\xb8\x18\xc6\xa4\x1f\x5e\x90\x83\x70\x42\x6e\x07\x10\xcc\x95\x5a\x45\xfb\xfb\x5a\xf5\xd4\xcc\x3d\xa1\xb1\x9c\xcc\x5f\xc4\x32\x5e\x26\x20\x2b\xc6\x86\x55\xac\xe6\x3c\x5e\x52\x12\x4c\xfe\x7a\xd0\x9b\x06\x40\x9b\x82\x15\xb9\x0d\x18\x1b\xd9\x24\xb8\x08\x30\xc8\x0e\xe1\x1d\xa5\x99\x6a\x9b\x76\x13\x21\x55\x9a\xe6\xad\xee\x9b\xaa\x4c\x97\x74\x77\xcc\x5e\xd4\x5c\xd2\x59\x9a\x06\xb7\x6d\x18\x82\x4b\xaa\x50\x30\x31\x77\x0a\xc6\xa4\x1f\x14\x1e\x0c\x6e\x44\x67\xa5\x0e\xa3\x40\xd7\x14\x60\x9c\xa6\x6d\x3a\xfa\xac\x67\xc2\x0a\x13\xf9\xe8\x75\xbb\x89\x6e\xf8\x1f\x2f\x02\xdc\x5d\x27\x54\xea\x11\x79\x39\xa3\xa9\xca\xc6\x66\x62\x72\xa1\xb5\x57\xd3\xb7\xd8\xf4\xed\x0b\xdf\xdb\xa3\xfd\xf8\xe6\x62\xb2\xd5\x5e\xb4\xbf\xff\x6f\xff\xfa\xdf\xfe\xef\x7f\xfb\x97\x7f\xfb\xd7\x00\x1b\x97\xcc\x34\x0d\xfe\xf2\xd7\x87\xbd\xbf\xde\xef\x37\x65\x8e\xff\xf2\xdf\xfe\x2f\x9d\x31\x4e\x8c\x30\xd4\x9f\x18\x48\x48\xdd\x48\x53\xf6\x2f\x81\xdb\x55\xb0\x75\x6b\x38\x7f\x65\xfe\x14\x6b\x9c\x24\xec\x92\xc3\x5b\xb6\xe3\xea\xc0\x27\x8c\xb4\xbf\xb2\xfa\x0d\x9d\x6c\x86\xe2\x30\xec\xb7\x09\xf9\xca\xd0\xe6\x22\xea\x67\xf0\x95\xa1\xb7\x2c\xbf\x55\x7e\xfb\xf6\xbd\x52\xe9\xb7\x4e\xe0\x0f\x2e\xf2\xcb\xe5\x6f\x57\x8c\xcf\x7d\x13\x4b\x12\x36\x17\xd1\x41\x86\x71\xf7\x62\xeb\xc6\xbf\x0c\xcc\x8d\x86\x92\xd8\x2b\x28\x51\x61\xb1\x19\xc9\x31\xf9\x01\x8c\xe5\x87\xce\x2e\xe7\xec\xe3\xa7\xc5\x92\x8b\xd5\x67\x99\xa8\xfc\xe0\x4d\xb0\x23\x88\x96\xb9\x79\xd0\xc0\xe7\x87\xb6\x19\x58\x06\x0a\x8f\xa4\x41\x92\xa6\xfa\xda\xe4\x44\x21\x9b\x8f\x62\xdc\xfd\x28\x18\x47\xe6\xa6\x0b\x5c\x13\x05\xfc\xd2\x96\x2e\xf8\x02\xdf\xda\x84\x06\x41\xfa\xc0\xc8\xa5\xea\xce\x60\x42\x92\xee\x6c\xc0\xef\x89\x41\x4e\x13\xd6\x30\x23\xd3\x92\x87\xad\xe8\x74\xc6\xd8\xb8\x3d\x9c\x28\x34\xcb\x6f\x5a\x67\x68\x86\x71\x64\x92\x60\x45\x16\xbe\xee\x39\xe9\x0d\x56\xf7\xe6\x03\xbc\x26\x8b\xd1\xbc\xd3\x19\x83\x16\xc0\x9c\x63\xfb\x0c\xd6\x38\x4d\x91\x1c\xad\xc7\x64\x36\x5a\x17\x8e\xbb\x32\x8b\xbe\x32\x78\xf7\x0d\xb3\x0f\xc4\x30\x71\x23\x5a\x37\x86\xe1\x9f\xb3\xc4\x84\xea\x8f\xec\x09\xd2\x64\x7b\xd8\x33\x92\x34\x5f\xfc\x07\x8b\xc2\x38\x35\x83\x15\x79\xc8\xd1\x04\x9b\x91\xb0\x19\x5a\x84\x21\x9a\x11\x49\xd1\x0c\x92\x7b\x07\xa5\xe2\x07\x79\xf1\x03\xec\xe3\x3e\xac\xd2\x74\x4d\xec\x99\x91\x30\x7c\xce\xd1\x0a\x1b\xb0\x5a\xeb\xcc\x1a\x51\x92\x28\xe4\x43\xc1\x61\x3c\xa0\xf7\xe6\x83\x79\xa7\x83\x63\xb2\x18\xce\xd0\x64\x34\x1f\xc3\x1c\x47\xe6\x37\x96\x48\xc2\x1c\x62\x77\x80\x59\xd7\xc2\x08\x12\x64\xe5\x1c\x36\x30\x36\x8e\x7e\xce\x36\xb4\x1e\xb4\xad\x96\x6f\xf6\xc3\xfd\x19\x01\x5f\xf5\x23\x8e\x04\xcc\x60\xe4\x18\x11\xcc\xc7\x5a\xa6\x8b\xfc\x6b\xd1\x94\x9f\x0d\xd7\x43\x32\x07\x99\xc1\x33\x46\xf6\x47\xff\xf4\xa1\xb7\xf7\x61\xdd\xeb\xfd\x70\x34\xde\x87\xf7\x3a\xa5\xfb\x61\x7d\xbb\xd7\x3b\xf8\xb0\x7e\xf4\xa8\x77\xa4\xff\xdf\xe9\x8f\xf7\x2f\xe1\x67\x46\x82\xd3\x2b\x2a\x67\x0b\x71\x1d\xb5\x8c\xf9\xa8\xc5\x29\x9d\x26\xad\x6b\x36\xa5\xb2\xc5\xec\xc1\xb4\xa4\xa5\x44\xcb\xbb\x96\xc1\x4b\x46\x9e\xc7\x6a\xde\x9d\x2d\x84\x90\xf0\x4b\x6e\xca\x9c\x49\xb1\x7c\xe0\x6c\x11\xf0\x6b\xa3\xc5\x44\x75\x0e\x0e\x3a\x3f\x7c\xff\x37\xa4\xee\x1e\xdc\xc1\x19\xa8\x78\x47\x54\x0b\x2b\x43\x28\x22\x87\x2f\x19\x52\xfb\x3f\xf4\x7a\x38\x52\xf7\xee\xf5\x41\x75\x88\x49\xa1\x78\xa0\xee\x7d\xf7\xfd\xf7\x03\xde\x21\xb7\xef\x60\x65\x53\x6f\x7f\x9f\x83\xe5\x25\x43\xbc\x73\xfb\xce\xdf\xd4\x3e\x52\x9d\xdb\x3f\x6a\x09\x89\xc6\xcd\x18\xab\x65\x14\x41\x90\xfa\x96\x83\x7b\xcf\x1c\xd4\xf6\x06\x9c\xbb\x7c\x50\x1c\xc4\x29\xd9\x5f\x64\xa7\x63\xe4\x26\x71\x8f\x18\x4b\x4a\x18\x8a\xbb\xc4\x18\x6d\xc2\x50\xde\xe5\x3e\xa0\xd1\x76\x19\x63\x80\x21\x04\xdd\xf9\xee\xfb\xfe\x41\xc8\xf0\xd0\xb9\xce\x23\xd4\xef\x1d\xdc\x0e\x05\xb6\x36\x19\xfb\xc6\x9c\x71\xc6\xec\xca\x9b\x6c\x02\x83\xdc\xdb\xc3\xf6\x08\x6b\x9e\xe6\x65\x22\x9a\x19\xb7\x79\xb7\xb0\x18\xe9\x1f\xfc\xe8\xb6\x63\x7e\x38\x30\x70\xa6\xa4\x37\xa0\x77\xf3\xe1\xd1\x4e\x07\x23\x49\xd4\x88\x8e\xf1\xdd\xfe\xc1\x8f\x61\xe8\xae\xe1\xff\x85\x69\x51\xd3\x6e\x34\x10\x6f\xd3\x83\x84\xac\x4d\x2d\xeb\x3c\x5f\xb0\x17\xe0\x41\x72\x57\xe4\x22\xde\x41\xff\xbb\x1f\xbe\xfb\xf1\xf6\x9d\xef\x7e\xf8\xa3\xf6\xee\x11\xa6\x41\x35\xb3\xeb\xd8\xb6\xb5\x20\x49\xa7\xaf\xc1\x3a\xdb\x63\xf7\x5e\x32\x84\x8a\xea\xf6\x62\xbc\xbf\xf0\xf2\xfd\xab\x98\x5f\x3a\x01\xff\x67\x86\x4d\x4b\x71\x87\xe8\x52\xf8\x6f\x0b\x60\x64\x06\x0d\x0d\x6b\x8e\x95\x0f\x96\x85\x61\xa7\x13\xdf\x2b\xea\x6f\xae\x99\xcd\x90\x24\x84\x15\x48\xb2\x22\x31\xcc\xc9\xed\x3b\x83\xc1\xdc\xa0\xa3\x19\xf6\x94\xcc\xef\x92\xc9\xb0\x1f\xcd\xef\x91\x49\xe7\xe0\xce\xf0\xe0\x4e\x34\xdf\x33\xfa\xd3\xea\xee\x14\xdb\xd3\xc0\x3a\xe3\x15\x59\xed\x4d\xe1\x86\xdc\xbe\xb3\x37\x1d\x14\xa0\xfe\x95\xa1\x69\xe7\xea\xaf\x37\x18\x6b\x9a\xfd\x92\xa1\xab\xfd\x1b\x9c\x55\xbe\xaf\xb0\xb1\x37\xa8\x18\xc5\xb0\x80\x84\x90\x35\x36\x33\xdb\xe9\x24\x59\xd6\xe9\xc4\xd0\xe9\xb0\x2c\x17\xf8\x73\x36\x04\xb2\x61\x25\xd8\xb3\x57\x83\xc6\x93\x59\x2d\xba\xa5\x42\x95\x63\xa2\x6c\x1f\xcb\xca\x23\xaf\xd0\xfc\x28\x5a\x06\x3c\xae\x78\xaf\x0a\xfb\xfa\x84\xc6\x53\x2a\x93\x00\x03\x8b\xeb\x22\x69\x1c\x7b\x6b\xe2\x24\xae\x59\x13\x6b\x82\x55\x80\x61\xfd\x07\x59\x4a\x41\x20\x92\x98\xec\x7f\xe8\xec\x5f\xc2\x2c\xb6\xf4\x1f\x7d\x87\x61\x11\x37\x1a\x79\xe3\x91\xda\xeb\x8f\xd3\x14\xb9\xa7\xfc\xb4\x3f\x42\xc3\xe8\xaf\xa3\x0f\x1f\xa6\xf1\xde\x6c\xbc\x39\xc8\xf0\x26\xe8\xa8\x4e\x90\xe1\x00\x82\x4b\x16\xe8\x11\xaf\xe2\x1d\x1e\xc8\xad\x29\xd5\x7a\xd3\x9b\x57\x4f\x1f\x88\xe5\x4a\x70\xe3\x0e\x57\x3a\xe4\x97\x9f\x73\xcc\x60\xde\x34\x57\xaa\x88\x00\x10\x43\xd0\xd2\xa2\x32\xf9\x6e\xf0\xed\xfa\x69\x49\x23\xd0\x88\x3b\x90\x03\x4c\x49\xbe\xf1\x84\x16\x31\xd2\x44\x04\x56\x05\x6f\xa1\x59\x06\xd3\x98\xec\x8f\xda\xff\x80\xf0\x3f\x8f\xd3\xbf\x1e\xf4\xf6\x2f\xe1\x2a\x26\x9b\xa0\x1d\x44\xc1\x5f\x0f\xfa\x01\x04\xff\x60\x9e\x7e\x08\x20\x40\xe6\xe9\xc7\x00\x02\x6c\x9e\x7e\x0a\x20\xf8\x67\xfd\xf4\xc3\x51\x00\xc1\x5f\x0f\x7a\x41\x14\x74\x82\x0c\x6e\x1a\x21\x7d\x15\xdb\x2b\xfc\x1a\x3f\x52\xde\x00\xaf\xbc\xeb\xd3\x18\x6e\x62\x9c\xc1\x65\xbc\xed\x5b\x4e\x73\x59\xc9\x08\x27\x24\xbf\x24\x3c\xd4\x28\xa7\xc5\x86\xbb\xc2\x13\x04\x4d\x86\x84\xbd\xa0\xdd\x25\x99\xcb\x78\xa4\x2f\x42\xcc\x9e\xa6\x59\x80\x26\x94\xda\x3c\x46\xbc\x6b\x2f\xed\xc0\xd8\xd9\xa3\x4c\x9a\x5d\x6a\x24\xb0\x01\x4c\xe1\x22\xde\x0e\x88\xe8\x22\x63\x78\xee\xdd\x83\xcb\x18\x95\x3f\xd8\x9b\xc5\x1a\x06\xa4\xee\x6e\xaf\xc6\xe0\x44\xa8\x16\xe5\x62\x7d\x39\x2f\x0e\x50\xeb\x95\x7e\x16\x93\x9f\xb7\xa2\xff\xc5\x71\xc5\xae\xbe\x6b\x9d\x80\x5f\x89\x91\x8c\xd1\x24\xd6\x00\x77\x7d\xc3\xe5\x80\x27\x41\x51\x60\x5b\x79\x5c\xc7\xa5\xd8\x27\x26\xe0\x89\x24\xaa\xeb\x2b\x36\x52\x11\xb2\x1b\xe9\xd6\x1c\x91\x0b\x35\xce\x0f\xcf\xa5\x13\x1f\xdb\x84\xd0\x21\xef\x6a\xd0\x17\x01\x4d\x4c\x92\x8f\x5e\x62\xc2\x14\xba\xd7\xb1\x8b\x80\x78\x14\x97\x0d\xa0\xde\xe9\xec\x28\x86\x6d\x22\x32\x70\x3b\x05\x5b\x31\x2a\xb6\x8e\xb7\xf5\x4a\xc2\x65\x2f\x17\x2e\x67\x76\xc3\x73\x41\x46\x26\xb2\x71\x1c\xa3\xd9\x0e\x28\x07\x79\xbc\x9c\x05\xd8\x90\x98\x6f\x5e\x1d\x97\x75\xa1\xcc\x25\x97\x0b\x45\x17\x71\x86\x21\x17\x7f\x13\xcc\x66\x68\x89\x12\x8c\x1b\x6d\x72\x48\x69\x9a\x9e\x60\x2f\xd6\x1a\x8f\x6d\x43\x8e\x13\x27\x90\x1a\x41\xd4\x7b\x57\xe4\x87\x55\x0d\x4b\x34\x11\x29\x90\x20\x32\x46\x87\xc8\x01\x14\xbb\x62\xb8\x2a\xba\xa6\x29\x9a\xd4\xc5\xd9\x34\x6d\xe7\x29\xd6\xee\xb4\x85\xb2\x47\x5f\x56\x74\xa2\xe8\xb4\x95\xd0\xcf\x6b\xca\x27\xb4\x75\xcd\xd4\xbc\x65\xe1\xdb\x3a\x08\xf0\x60\x51\x5a\x6a\xb1\xed\x42\x27\x08\xdc\x3a\x9b\xe4\x09\x99\x13\x7c\x8c\x10\xd2\x62\xbc\x95\xe0\x6b\x94\xc0\x1a\x87\x61\xb9\x86\xb5\x2b\x98\x8c\xd6\x63\x53\xca\x0a\xeb\x97\x31\x5a\x6c\xc7\xa0\x4d\x86\xc1\x50\xe3\x56\xe2\xb7\xce\x7a\x78\xe8\xe3\x73\xf4\x71\x94\x44\x49\xc7\x70\xd2\xd3\x98\x1c\xc5\x25\x13\xd0\x03\x8e\x4e\x63\xd8\xd8\x43\x72\x35\x0f\xbf\xeb\x18\x6d\xa9\x39\x07\xfe\x2e\x9c\x49\xec\xbd\x84\x72\xca\x50\x74\x5d\x15\xc3\xb6\x03\x06\x7f\xed\xa1\x56\xe7\x71\x06\xd6\x68\x52\x31\x20\x37\xb5\xd6\xc7\x83\x42\xae\xf5\x2d\x9a\xcd\x30\x4f\x74\x38\x31\x6d\x09\xd2\x1b\x88\xbb\x32\xa7\x8b\x72\x24\x4c\xa0\x3d\x42\x08\x1f\x4a\x7f\xdb\x90\x80\x3e\x8e\x44\xa7\x33\xa0\xd5\xde\x54\xb4\xfa\xbf\xa7\x2b\x79\x37\xa4\xed\x86\x56\x04\xf8\xdd\xfc\x9a\x0b\x6e\xcf\x71\xd3\x11\xf7\x9d\xc9\x03\xb8\x98\xb4\x0a\x09\xb1\x9b\x1b\x97\x54\x1d\xd6\xbc\x9b\xfe\x03\xbd\x31\x8a\x82\x86\x4c\xde\x25\xd1\xe9\x60\x5a\x00\x47\xe6\x32\xb0\x49\xb4\xab\xa6\x30\x4d\xc3\x3c\x4e\xfe\x53\x20\xe3\xc0\xd2\xe9\xd4\x01\xd3\xee\xf9\x93\x1c\xfd\x0c\x92\xca\xbc\xec\x42\xc9\x52\xfb\x5a\x39\xca\xd1\x44\x10\x9e\xf7\x82\x91\x76\x1f\x62\xdb\x95\x09\x31\xab\x72\x4d\x7a\x83\x75\xc1\x4a\xd7\x56\xa8\x17\xa3\xf5\x18\xbb\x3e\xc5\x61\x88\xd8\x50\x78\xec\x59\xef\xed\x69\xfc\x41\x8c\xb4\x7b\xe0\xe9\xfc\x04\xe3\x01\x4b\x53\x51\x5e\xf9\x7e\xc1\x67\x18\x78\x15\xd1\x12\x21\x2b\xf6\xa3\x12\xf5\xde\xd5\x6f\x7f\xc7\x89\x1d\xa4\x28\xd8\xaf\x24\xbd\x81\xbc\x5b\x6c\xd2\x6b\xdd\xc0\x2a\xa1\x6c\x24\xc7\x4e\x75\x90\x46\x67\xd0\x1a\xde\x88\x1a\x50\xdf\x33\x31\x57\xf1\x26\x1f\x15\x85\x1e\x28\x6c\x63\xfd\x64\xd4\xa2\x84\xf0\xb7\x79\x65\xb5\xfe\x3b\x63\xd3\xae\x2b\xf7\xb7\x67\xdf\x9c\x17\x56\xb0\xc5\x8d\x9a\x2d\x25\xb7\xf1\xd6\x42\xe6\x08\x51\x22\xad\x99\xc8\x59\x14\x6c\x68\x5f\x17\x32\xba\x7a\x85\x7e\xe5\x00\xdf\x99\x93\x1a\x5c\xac\xaf\x0c\x7c\x58\xb8\x6f\xe7\xf6\xe1\xc0\xb2\x22\x40\xdc\xb7\x0b\x14\xc1\xe3\xb2\x9a\xb9\x30\x33\x9b\x6c\xa7\x31\xb0\x18\x4e\xe3\x42\x18\xb1\x89\xa5\x98\x27\x4d\xa7\x88\x14\x34\xae\xa6\xd1\x78\x6b\x2d\x29\x62\x97\x12\x48\x3b\x6f\xcb\x18\xd9\x59\xee\x04\x24\xe8\x98\x37\xc7\x0e\x0b\x71\xc5\x0a\x7c\xa1\xb9\xcd\x76\xab\xd3\x8a\xa2\x46\x69\xa3\xe6\x02\xeb\xfd\x6a\x1f\xb3\x0c\x36\xb5\xcc\xd1\x91\xe6\xfc\x8f\x59\xe3\x11\x70\x1e\x37\x26\x8b\x38\x4d\xff\xfd\x7e\xbc\x25\x83\x1e\x29\x6d\x4d\x6d\xa3\x5e\x18\xa2\x25\x2a\x05\x80\x1a\x59\x1f\x29\xcd\x55\x2e\xc4\xf4\x66\x7b\xdc\x84\x90\x17\x1c\x49\x9d\xc9\x04\x76\x9b\x5b\x0d\xd0\x78\x50\x8b\x18\xe5\x09\x76\xc3\x4b\xc4\xc6\xa0\x8d\x02\x13\xd6\x99\xab\x3d\x1b\x77\x33\x4d\xb9\xb9\xd7\xaa\x9a\x0c\x41\xbc\xd2\xeb\xd0\x1c\xcf\xde\xff\xb2\x77\x7d\x7d\xbd\x37\x13\x72\xb9\xb7\x96\x0b\xab\x42\x4c\x07\x9a\xa1\x27\x54\x91\x37\xaf\x1f\xed\xfd\x68\xf6\x2e\xee\x2b\x44\x61\xa3\x3b\x1b\xcd\x50\x0f\x8a\x5d\x35\x70\x3d\x31\xc9\xc6\x21\x13\x83\x5b\xcc\x14\x63\xe0\x71\xd9\x63\x41\x60\xef\x85\x79\x1e\xc3\xc7\x98\x34\x4c\xa1\x66\x47\xf6\xda\x9b\x49\x9c\xc1\x97\xd8\xec\xd2\x1a\x33\x10\x1c\xc6\x44\x74\xdf\xbc\x3a\x86\x4f\x31\xf9\x18\x77\x6b\x65\xe1\x85\x49\xf5\xc5\xe1\x38\x57\x8c\x5f\x35\x68\xbd\x01\x86\x07\x71\xd9\x48\xf7\xda\xbd\xad\xc4\x35\x9c\x68\x7d\xee\x70\xef\xd7\x78\xef\xeb\x78\x1f\x9e\xea\xb7\x0f\xd3\xce\x5e\x37\x4f\x7a\xa3\x95\xe3\xe9\x3e\x3c\x8f\xc9\xfe\x3f\xa1\xde\x97\xb4\xf7\x0e\xef\xc3\x2d\xfd\x36\xea\xed\xfd\x30\xee\xdc\xda\x87\x87\xfa\xed\xc3\x54\x3f\x3e\x32\x1f\x3e\x4c\x0f\xf7\x1e\x69\x45\x58\x27\xdd\x37\x95\xae\x7b\xbd\x5e\xcf\xfc\xff\xc9\xfc\x3f\x34\xff\x1f\xb6\xfe\xf2\xd7\xfd\x68\xf8\x8f\xa3\x0f\x1f\xc6\xe3\x7d\xf8\xfc\xed\xac\xa5\x9c\x8f\x6d\x3b\x26\xab\xb1\x6e\xf6\x1f\xb5\xc6\x9d\x74\x2b\xe5\xd6\xfe\x25\x7c\xcd\x6b\xad\xd4\x37\xde\xbf\x84\xb7\x75\x8d\x2a\xd7\x0c\x8d\xe9\x63\x14\x94\x02\x58\xf7\xec\x39\xd7\x60\x1c\xb4\x1b\xa3\x5a\x3b\x1e\x1b\x3c\xe5\x57\xf1\x82\x4d\x5b\x73\x91\xa8\xc0\xec\x9b\x22\x49\xde\x69\x4c\x76\x02\xa3\x09\xdb\xbf\x23\xbb\x32\x7b\x2f\x44\xe6\xf1\xe7\xe8\xc4\x44\x06\xd1\x4f\xdf\xb2\x57\xaa\xae\x12\xc7\xe2\x9a\xca\x07\x71\x42\x51\xa1\x0b\xbf\x67\x10\x74\x03\x5c\xba\xdf\xb7\x64\x73\x13\x65\xd3\x97\xe6\xce\x74\x0c\x4e\x60\x79\xe6\x62\xa5\x48\x3c\x34\x5b\x52\x41\x87\xc6\x48\xe2\xa8\x08\xf8\xe4\xd5\xda\x6e\x80\x33\x44\x31\xdc\x8f\x6d\x09\xba\x1b\x10\x2e\x04\x17\x92\xe4\x49\xac\xf3\xfd\x09\x10\xe8\x81\x7f\xfe\x83\x9a\xad\x3e\x63\xc4\xa0\x77\x0c\x51\xcf\xe6\x78\x59\x2a\x93\x1d\xf2\x6b\x6c\x3c\x03\xe1\x7d\x8c\x8b\x36\x32\x78\xb2\xc3\x0e\x5c\x28\x7c\x44\x95\xc1\xc7\x66\x68\x9d\x9b\x03\x82\x80\x90\xf5\x68\xfd\xff\x71\xf7\xe6\xed\x6d\xdb\xca\xe2\xf0\xff\xef\xa7\x90\xd0\x84\x25\x2a\x58\x96\x9c\xa5\x29\x15\x44\xc7\x71\x9c\x36\x6d\xe2\xa4\x71\xd2\xa6\x55\x74\x7c\x69\x0a\xb2\x19\xcb\xa4\x02\x80\x5e\x2a\xf1\xbb\xbf\x0f\x06\x0b\x41\x8a\x76\xd2\x7b\x96\xe7\x3e\xbf\x93\x53\x99\x04\x81\xc1\x36\x18\x0c\x06\xb3\x54\x31\x17\x82\xa0\xe8\x2f\xf3\x65\x88\x49\xc8\xa8\x4d\xc7\x4f\xee\x3b\x97\x50\xa6\xb5\xd5\x46\x03\x7c\x2c\x20\x16\x02\x6b\x9e\x62\x92\x4d\x2b\xdf\xfe\xe0\x29\x89\x0e\x07\x24\xf7\x28\x2c\x1a\x20\x4a\xf3\x0a\x2f\x15\x27\x45\x5f\x99\x51\xca\xf1\x78\xf8\x30\x7a\x44\x72\xc7\xdc\x3c\xa2\x34\x1d\x0f\xa3\x1d\x8c\xf5\x4d\x7a\x8e\x63\x35\xfd\x66\x74\xbb\xe1\x70\xa0\x32\x3c\x8b\x23\xc8\x78\x27\x8e\x9e\xc7\xd8\xc2\xaa\x1a\x12\x53\xe7\x41\x30\x27\x29\x2e\xb9\x35\xe6\x01\x87\x47\x7e\x67\xd4\x51\x97\xf2\x49\xa6\xba\x48\xd9\xd6\x50\xdf\x03\x3e\xa1\xef\xe2\x70\xe7\xc1\x43\xf2\x60\xcb\x4d\xa4\x66\xcb\x2d\xaa\xc7\x4f\x76\x1e\x3c\xf0\xbf\xc0\x58\x25\x94\x9b\x11\xd5\x75\x70\x9f\xff\x4f\x7a\x50\xd1\x77\x06\xf4\xbd\xad\xcc\xe1\x67\x52\x92\x0f\x5f\x9e\xda\xc9\x80\xd4\xfe\x4d\x8d\xde\x31\xb8\x61\x5f\xd0\x01\x59\xb6\xb9\x2f\xb2\x43\xbf\xc0\xe0\x3f\x11\x45\x60\x62\x6f\xe8\x43\xa4\xf6\x5c\x9b\xc3\x91\x85\xd1\xa2\x47\x77\xc8\x9c\xf6\x8c\x8f\xc7\xd1\x32\xc4\xfa\x70\xfd\x48\x1d\xdd\x4d\x26\x5b\x1e\x80\xe9\x85\xaa\x39\xd1\xfb\x41\xf0\xdc\x4c\xb0\xfa\x36\xc2\x8c\x0e\x1f\x7e\xc7\x7a\x6e\x4e\xd4\x00\x0d\x1f\x62\xb2\xe8\xf5\x08\xef\xf5\x00\x52\xdf\x6b\xd6\xa0\x3a\x05\xc0\xd5\xd8\x16\xe5\x44\x3c\x79\x68\x93\xec\x1c\xba\x56\xe5\x7a\x08\xb2\x27\x03\x63\xf7\x6f\xa1\x05\x41\xf6\xf8\xbe\xd7\xab\x5e\xa9\x3e\xbf\xf7\x1a\xe7\xc3\x1c\xbd\xaf\xb5\x7a\x05\xe8\x5c\x6f\xb4\xf3\xbc\x4e\x73\x9c\xd3\xd4\x21\xe6\x40\x25\x18\x50\x39\x1d\x0e\xbe\xcb\x7b\xa0\x1b\x91\x7b\x68\x02\xf5\x83\x96\xc8\xce\x83\x87\xdf\xa9\x87\x5e\x4e\x76\xba\xb4\xd7\xcb\x82\xe0\x7e\x97\x66\xeb\xb5\xd0\x2d\x54\x2f\xb6\x90\x66\xc7\x9b\x13\xa7\x46\xae\xab\x5e\x74\x2e\x87\x96\x55\xd2\xa8\x98\x88\x5e\x6f\x4a\x99\x23\x4d\x46\x91\x65\xee\x35\xc7\xcc\x71\xe9\x7f\xd5\x4e\x3d\xc5\xd6\x9c\x08\xfa\xfd\x68\xd0\xa5\x22\x08\xe2\x27\x83\x11\x4e\xa8\x6a\x33\x29\x26\x62\x6b\x6b\x4a\x8b\xc9\xbc\x17\x6f\x0d\xd5\xfb\xbc\xb7\xb5\x15\x4f\x69\x32\xb2\xad\x78\xd4\xad\xb0\xc4\xa0\x61\x51\x92\x5f\x6e\xc4\x70\x40\x80\xcc\xfa\x60\xb5\x37\xad\x16\xa9\xf4\x2d\x96\xc2\x2b\x38\xda\x78\xd1\x86\xef\xee\x3c\x78\x88\x89\xa4\x7b\x71\x28\xb7\xd5\x73\x65\xa8\x54\xd1\xfb\x16\x07\x66\x15\x6c\x20\xc4\xed\x97\x67\x80\x52\x9c\x0e\x8d\xbe\x93\x22\xd4\x46\xe8\xfa\x68\x94\xf6\x7a\x78\xa0\x35\xec\xa7\xe3\x30\x7f\xc2\xb5\x51\x2c\xe1\x34\xc7\x5e\x7e\x1c\xd9\x6d\x44\x87\x46\x4f\x31\xe9\xf5\xf2\xca\x2e\xa6\x5e\x0e\x2e\xbb\x4c\x57\x1f\x41\x57\xf3\x20\x00\xdf\x90\x70\x5f\x1f\xe6\x41\x10\xe6\x10\x5e\x3d\x53\x87\xb3\x71\xc8\x7a\x94\x8f\x51\xa4\xfe\x45\x88\xe4\xb4\xab\x2a\x64\x3d\xc8\xef\x5c\x32\x86\x6a\xa1\xf1\xc7\xdf\x1b\x43\x96\x08\x55\x26\x95\x68\x82\x7a\x0c\xbc\x31\x56\xce\x09\xff\x88\xe9\xaa\x24\x3f\xc7\xf4\x27\xd0\x01\xf8\x23\x26\x2b\xd4\x41\xd1\x90\x7c\x8b\xbe\x8d\x86\x04\x3d\x56\xcf\xe8\x09\xfc\xfe\x0f\x8a\x86\x25\x26\xbf\xda\xcc\x3f\xab\xcc\xdf\xc0\xa7\x31\xfc\xae\xe0\xb7\xd4\xd9\x7e\xb7\xd9\x7e\x55\xd9\xb6\xe1\x53\x04\xbf\x23\xf8\xa5\xf0\xfb\x0f\xf8\x9d\xc0\xef\xc7\x8f\xf0\x67\x0a\xbf\xff\x84\xdf\xb5\x86\xf5\x67\x2b\x2b\x44\xaf\xe2\x50\x92\x41\x75\xb6\x79\x72\x6f\x27\x08\xf8\xe3\xe1\xce\xf7\xe0\x6d\x94\x11\x89\xc7\x32\x6a\x15\xc8\x97\x44\x26\x74\x35\x97\xcb\x68\x67\x48\xc0\xe5\x14\x4c\x22\xa8\x9b\x3c\x1a\x10\xad\x42\x73\xff\xfe\x3d\x72\x29\xd4\xfb\xa5\x80\xb7\x92\xf8\x2a\xaa\x95\xcc\xff\x32\x94\x09\x91\x7d\x91\x9c\xb2\x73\x86\x4b\xc2\xdb\x72\x21\xa0\xbd\x9e\x3a\x0e\xbc\x2f\x63\x21\x2e\x73\x3e\x2b\x49\xd6\x56\xa8\x2b\x8d\x32\x8d\xec\x27\x71\x96\xe5\xf2\x29\xdb\x7d\x1a\x0b\x75\x2c\x37\xbe\xb2\x14\x96\x9b\x9a\x4b\x92\x27\x6d\x03\xe5\x54\x90\xa9\xbb\x19\x0e\x82\x03\x43\xfc\xa4\xc7\x43\x06\x81\x26\x3b\x21\xaf\xed\x12\xeb\x75\x97\x05\x01\x5a\x23\x45\xa7\x4b\x92\x26\x37\x7a\xe1\xe8\x48\x8f\x15\xc8\x93\xb0\x0a\x07\xb5\x03\xd0\xbd\x16\xac\xd7\x68\x1b\x69\x0f\xc9\xae\x2e\x70\x78\xac\xf0\x80\x82\x33\x20\x2d\xd8\x54\x0f\xdf\xc0\x03\x2e\x49\xdc\x52\x37\xd5\x6a\x5b\x20\x1d\x34\xfb\x6f\x97\x6f\x8e\x4e\x10\x0c\xb5\x8c\x23\x09\xd9\x64\x00\xba\x0a\xeb\x35\xd3\xfb\x77\x49\x92\xd6\x29\xeb\x23\xed\x6d\x13\xdd\xdd\xd1\xba\xc5\x75\x56\xb6\x24\x45\xa2\xd6\x8f\x80\xdf\x39\xfc\x2e\xe0\x77\x09\xbf\xa7\xf0\x3b\x83\xdf\x0b\xf8\xbd\x86\xdf\x73\xf8\x3d\x81\xdf\x63\xf8\xbd\x84\xdf\x43\xf8\xdd\x87\xdf\xd7\xf0\x7b\x04\xbf\x9f\xe0\xf7\x0a\x7e\x77\xe1\xf7\x0c\x7e\xdf\x24\x37\xe9\x8a\x7b\x17\x02\x7c\xbd\x2e\x12\x32\xa7\x03\xb2\x50\xf4\xcf\x44\x1e\xe8\x0e\xc9\x8c\x76\x87\x9a\xe5\x83\xc0\xab\x7a\x94\x54\x96\x0a\x4b\xf5\x9b\xc5\x51\xfd\x06\xdc\x29\xac\x16\x09\x9e\xe2\xdc\x73\x2c\x4f\x29\x44\x46\xff\x5c\x30\x7e\x6d\x93\xe7\x3c\x3e\x51\xa7\x6d\xfb\xde\x44\x63\xd5\x12\xff\x72\xef\xc7\x58\xbb\x03\xf7\xd3\xfe\x82\x34\x92\x6b\x1e\x7a\x34\x7f\x4c\xab\x8b\x30\xeb\xfd\x3a\xa5\xf9\x64\x3e\x25\xc2\xb8\xbd\x2e\x92\x08\xc2\x2d\xad\xd7\x5d\x8b\xe9\xa9\xde\x4b\x79\x93\x53\xd7\x1d\x47\x23\x41\xe7\xc9\x48\x1d\xd2\xd3\xac\x60\xe5\xa2\x47\xd3\xfa\x6c\x13\x41\x45\xe2\xfb\xce\x16\x50\x47\x1a\x04\xe1\x0b\x57\xc5\x7a\x8d\x7a\x88\xd2\x74\xbd\x46\x5b\xe6\xaf\x42\xa2\x14\xe3\x4d\x80\x95\x87\x51\xc5\x57\xa5\xb7\xb7\x0e\x26\x4f\x35\x51\x4d\x65\xd5\x4c\x55\x44\xd1\x7a\x75\x14\xeb\x52\x20\x44\x0b\x5c\x21\xff\x22\x08\x42\x9e\x80\x63\x1c\x1b\x41\x04\x26\x0d\xb7\xad\x0f\x43\x6c\xb0\xc7\x8b\x39\xb4\x58\x10\x27\xc1\xbe\xc8\xd3\x99\xae\x30\x08\x64\x32\xb1\x59\xa6\x16\x36\x44\x13\x77\x98\x81\xb1\x6e\x7a\xb3\xba\xb1\xa0\x87\x49\x64\xc0\x80\xe5\x95\xa9\xc9\xcf\xb1\x30\x39\xc6\x82\x5e\x24\x11\x10\x8c\x7c\x32\xef\x0d\xa7\xe3\x50\xd0\x65\x42\xe6\xbd\x1e\x8e\xc2\x36\xa4\x1a\x18\x8c\x34\x7a\x1e\x48\xcd\xde\x55\x82\x4b\x6f\xfa\xe6\x1a\x45\xb2\xf5\x3a\xdb\x00\x10\x04\xe8\x1b\x98\x93\x1b\x66\x03\xb4\x94\x5b\x0b\x81\xba\x85\x1b\x36\xdb\x2b\xbb\x3e\x32\xdd\x28\x23\xd9\xad\xd6\x8a\xfe\xeb\x2f\x17\x58\x6b\x6d\xfd\x12\xf4\xcc\x60\x61\x29\xa8\x1d\x55\x5b\xcf\xf8\x30\x89\x4e\x2b\x2c\xd6\x1d\x5d\x40\x47\x21\xe6\x55\x0a\x64\xb7\x6b\x46\x11\xaf\x04\xf5\x72\x97\x82\x5e\xc3\x98\xfa\x48\xbe\xb4\x85\xa1\x63\x82\x9e\x57\x95\x7f\x6a\x56\x74\x0a\x79\x37\x3b\x9f\x52\x7a\x14\x63\x8f\xac\x64\xee\xd1\x27\x2f\x99\x7b\x74\x64\x06\xfe\x38\x42\x03\x7f\xbe\x6e\x28\x1d\x73\xaa\x5b\x6e\xb7\x95\x34\x08\xb4\xd4\x42\xd0\x59\xc5\xc0\xc2\x46\x93\xfe\x97\x1a\x08\xcb\x78\x37\xa9\x16\xbf\x46\xb4\xd5\x7f\xba\x76\xbd\x1a\xe0\xb4\x5a\x9b\xba\xf2\xbf\x3a\x2f\x0d\x14\x57\xc8\xec\xaf\xc9\x99\x5e\x93\x4c\x93\x2c\x8d\xb2\x41\xa0\xe6\xce\x12\x48\x9d\xf6\xef\x1b\xae\xfa\x58\x28\xfc\xd6\xa7\x2b\xb5\x16\xfc\x75\x70\x01\x2d\x83\x15\x52\x5b\x49\x0b\xcb\xbc\xcc\x7b\x43\x8c\xdd\x7a\x68\xac\xa2\x6b\x6f\x09\x7a\xfd\x81\xe5\xe4\x2a\xf7\xf2\x9f\xeb\xfc\xff\xd0\xab\x6e\x19\x04\xe1\x82\xa2\xbb\xf7\x07\xa8\xb7\xc0\x04\x42\xe6\xc4\x6a\x33\x5c\x54\x37\x60\x17\x74\x30\xba\x78\x1c\xdb\x7d\xf1\xa2\xd7\xd3\xac\xc0\x35\x8d\x27\x17\x53\x77\x7a\xbf\x5e\xaf\x67\xfa\xc3\x39\xfd\x33\x0e\xaf\xc9\xef\x31\x1e\xcd\xc6\xd5\xb8\xf5\xe8\x79\x54\x8d\x6d\x8f\x9e\xeb\xe1\x98\xd1\xee\xa0\x54\x84\xdc\x9d\x3d\x61\x51\x1b\x2e\x2e\x35\xcc\x5a\x6a\x78\xb5\xcd\xf5\xa6\xa6\x6e\xa9\x85\x52\x8b\x26\x51\x8d\x0b\x79\x9a\xf3\x54\x5e\xa3\xd1\x7c\x4b\x77\xcb\x74\xa3\x37\x24\x66\xdf\x3b\x31\xd3\xa2\x76\x51\x7f\x60\x4f\x12\x1d\xbf\xe2\x18\x06\x0c\x62\xb2\xd4\xf7\x19\x35\xc8\xaf\x93\xda\x86\xa9\xb7\xdb\xf5\xfa\xd4\x9c\xf9\xff\x6e\x3f\xcc\xa6\xd5\xda\x17\x27\x50\xe4\x26\xc3\x4d\x1b\xb0\xb7\xc9\x26\xf4\x37\x75\x92\x59\x38\xd1\x13\xa8\xde\x99\x8e\x1f\x25\x6e\xe7\xad\x3a\x01\xd2\xdf\x74\x7c\x4a\xbb\x83\x08\x4d\x75\xfb\xc2\x53\x38\x2c\xaa\x01\x72\x32\x80\xdb\x9b\x78\x6b\xbd\x97\x09\xe1\x94\x1e\x27\x56\xe4\xe0\x8d\xf9\xa5\x5e\xa4\xef\xeb\x7c\xd5\xdf\x1a\xc7\xf5\x9a\x1b\xc1\x62\x97\x2e\x34\x3e\x9e\x54\xb2\x97\x05\x19\x0e\x40\x9a\x79\xf2\xe4\xe1\x83\x07\xf7\x1e\x34\x7b\xa0\x06\x10\x8d\xcc\x3a\x36\xb3\x71\xa2\xd8\x73\x8f\x1b\xd1\xa6\x35\x27\x80\x3f\xa5\xc7\x58\x8d\xd4\x90\x56\x23\xd9\x06\xb9\x6c\x22\xd9\x61\x7d\x5f\xd3\x28\x46\x1a\x3b\x0b\x16\x74\xbf\xa2\xea\x8a\xad\xd0\xf9\xba\x6e\x1f\x54\xa8\xf8\xa9\x8e\x8a\x76\x67\x6c\xd0\xa7\xbf\xb3\xbf\xd9\xbd\xeb\xeb\x41\xdc\xb4\x03\xa5\x49\x68\xe5\xb2\xf3\xca\x16\x00\xc3\xe9\xe0\xcb\xd0\x63\x58\x1f\x1b\x7b\xcb\xdf\xee\x59\xdb\x0e\xe1\x63\xdf\xbe\xc7\x90\x54\x83\xaf\x57\xb9\xe6\x4c\xb2\x8a\x0a\x64\x15\x73\x7b\x43\xef\x82\x20\xcc\x93\x50\x37\xc9\x1c\x0b\xc7\x3e\xeb\xe8\xbe\xe0\xa8\xd6\x99\x46\x4f\x75\xdb\x5e\xeb\x13\x41\x63\x25\xe8\x26\x36\x97\x84\x96\x5d\xea\x03\xe9\x42\x31\x24\x9f\x3c\x86\x04\xd6\x2d\xe8\xd0\xe9\x3a\x11\x22\x35\x04\x76\x2b\xbc\x7d\x0d\xa3\x45\x9e\xc4\x0b\x58\xe8\x60\x6d\x94\x0b\xcd\x95\x1b\x58\xb8\x02\xe6\xa8\x4c\x59\x3b\xf9\xf8\xd8\x7f\x04\x9d\xaa\xc8\x9f\x6a\x29\x69\x6e\x65\xae\xb4\xed\x02\x87\xfe\xaa\x4f\xe6\xe5\x1b\xb7\x85\xa7\x5d\x7a\x14\x07\x81\x0f\x08\x37\x00\x6c\xe2\xc0\xc8\xa4\xd7\x51\xd8\x6b\xe6\xa7\x5b\xc6\xde\x51\x1d\x35\xde\x61\x63\x1e\x34\x21\xea\xc3\x59\x3f\x2c\xd4\xff\x17\xb8\x7e\x50\xc3\x5a\x02\x00\x39\x0a\x75\xa2\x33\xe2\x80\x42\xa7\xdb\xb7\x71\x08\x6b\xa0\x49\x18\x5c\xe5\x8d\x13\x09\x8e\x12\x35\xf3\xe3\xaf\xcc\x1e\x85\xad\x27\x36\xc8\x63\x85\x3a\x80\x4a\x6e\xa6\xeb\x53\xbe\xa8\x58\x95\x01\xee\xa1\x08\xe1\xda\x11\x69\x81\x31\x69\x3d\xa8\xc1\x0d\x8e\x1e\xd4\xc6\xb8\x81\x10\xbd\xd6\x02\xb8\x01\xd2\x82\x12\xb3\x6a\x46\xd8\x64\x30\xca\xa7\x23\x0d\x64\x1c\x36\x66\x12\x47\x1a\x2a\xb4\xb9\x39\xf7\xd8\xed\xfd\x7f\xc6\x61\x4a\x7e\x8d\xb1\x3f\xf1\x57\x49\xf4\x05\xa0\xe3\x36\x98\x91\x45\x43\xd7\x56\x03\xfe\x8f\x18\xd7\xe0\xef\x26\x91\xc3\xdf\xb1\x2d\x84\xbe\xf5\xe6\x6a\x6c\xea\xed\x51\xd0\x2f\x8e\xaa\x57\x5d\x3d\xba\xbb\x73\x0f\x45\x0e\x78\xd4\xd6\x1c\xbf\xc6\xb3\xc4\x6b\x9c\xcd\x69\x5a\xf7\x73\x8c\x71\x39\x87\xe8\x16\x2f\x5b\x84\x61\x70\xed\x6a\x35\x47\x5f\x26\xc4\xdc\xb2\xe7\x9b\x7a\xa1\xed\x9a\x38\x95\x69\x2d\x26\x09\x7d\x19\x87\x99\xa7\x16\x8a\x4a\xd8\x95\xab\x18\x2e\xa0\x60\xe4\x07\x01\x79\x99\x60\x46\xdf\xc6\x61\x8e\x1d\x2d\xe3\xf4\x4d\x12\x82\xad\x9b\x81\x9c\xb7\xc4\x4d\xe1\xc6\x56\xe1\x4d\x12\x26\x24\x85\x4b\x17\xd2\x12\x7d\x87\x5b\x9b\x8e\xa4\x66\xc4\x09\xc6\x4a\x67\x31\x11\xf4\x4d\x1c\x16\x78\x64\x63\xb7\xd7\x0c\x1a\x13\x3d\x29\x98\x88\x4a\xb5\xc9\xbf\x40\x33\xdf\x6d\xff\x0b\xc3\xb1\x95\x24\x5e\xaf\xc3\x0c\x2c\x36\xe9\x9e\xb1\x38\xcb\x30\xc9\xfa\x39\x4f\x4f\xd2\x8c\xbe\xf3\xd3\x6c\xc4\x02\x7a\xe0\xa7\xba\x93\xca\x8b\x5a\x5e\x7b\x52\x79\xef\xa7\xc2\x7a\x7d\xd5\x4c\x81\xd2\x77\x6a\xa5\x15\xef\xf3\xac\x0e\xcf\xd8\xae\x3e\xf7\x53\xf5\x38\xd1\xa7\x9b\x69\x66\xec\x3e\xd7\xea\x8a\xc5\x29\xfd\xd1\xa5\xe0\x92\xbc\x4d\xe8\xcb\xc4\x73\x14\xb0\xd7\xe2\xe2\xe3\xad\xaf\x3b\x6d\xce\xfc\xdc\x13\x76\x83\x49\x92\x3b\x8d\xe5\x66\x47\x22\xa9\xe1\x85\x49\x6c\x45\xb8\x09\x35\x4b\x07\x6e\xb6\x2d\xe6\x13\x41\x99\x22\x58\xbe\xc2\xa4\xc2\xbe\x71\x28\x7a\x14\x6d\x6f\x23\xc2\x35\x0f\xa8\xde\x79\x2f\xcc\xc6\x28\x42\xbd\x4c\x47\x65\xfa\x07\xc2\x44\xf4\xe8\x2f\x0a\x27\x8d\xff\x2b\xa0\x32\x02\x6e\x47\x7a\x29\xc6\x91\xa5\x78\xcc\x24\x6f\x6f\xeb\x32\x9b\xf2\x97\x71\x3c\x19\x4c\x23\x7b\xc8\x52\x94\xbb\x17\x1b\x56\x62\x1b\xe1\x08\x21\x5b\x43\x62\x40\x8d\x51\x2f\x71\xd5\x16\x26\xf1\x1b\xd4\x2b\x30\x11\x25\x79\xf7\x37\xc6\x52\x0d\x14\x6c\xed\xc7\x8b\xfc\x58\x35\x16\xfb\xa1\x98\x8c\xbd\x2c\x73\xcc\x8a\xc1\xce\xa6\xb3\x78\x04\x3e\x08\x5c\x9c\x79\xcd\x9f\x32\x4b\xc6\xd4\x28\x6f\x6f\xa3\xde\x2f\xb1\xd9\x38\x70\xcf\x5e\x14\xc2\xcd\x53\x8f\x47\x10\x3d\x5d\x03\x21\x07\x6d\xfe\x3a\x6c\xfb\x4d\xdb\xd5\xbc\x95\xe4\xc5\xad\x39\x2d\x9a\x94\xe4\xfd\xad\xf9\xaa\xbb\x92\x57\x5f\x1a\x38\xc0\x2f\x37\x6c\x1e\xde\x80\x16\x3e\x72\x21\xd7\xf8\xf8\x97\x38\x64\x38\x82\xdf\x1e\x74\xb1\x24\x77\x6e\x81\x0e\x90\x1b\x00\xc1\x2b\x92\x1a\x33\x5c\x92\x67\xb7\x95\x6d\x69\x0c\x94\x75\x24\xb7\x24\xcf\xbf\xd4\x33\x35\xc1\xd5\x6d\xcb\x06\x82\x32\x85\xa0\xcc\x47\x50\x56\x43\xd0\x92\x3c\xbd\xad\x85\xfa\x6c\x61\xc1\x8f\x15\xfe\x4a\x28\xf5\xf9\xf6\xb9\xf6\x08\x4a\x49\x7e\xbc\xad\x06\xbb\xa8\xbd\x4a\xbe\xb1\x95\xfc\xd5\xbc\xbe\xd2\x79\x56\x27\x4c\x46\x12\x94\x82\x19\x69\x3a\xc7\xac\xab\x30\x82\xce\x43\x1c\x04\x2f\x64\xf8\x36\x21\x2b\x45\xb4\xa3\xbf\x92\x70\x2f\xd9\xf4\xe4\xc8\xaa\x71\xe5\xde\xa6\x97\xc1\x76\x45\xf4\x86\xb4\xe9\x02\x24\xc3\xa3\x37\xa0\x2f\xe5\xf5\x18\xb7\x6d\x37\xcc\x6c\x37\x25\xc6\x44\xaf\x45\xd5\x90\x77\x09\x26\x76\x8f\x50\xef\x07\xb7\x36\x6c\x04\x4d\xf1\x0c\xd8\x22\x44\x8a\x04\x40\xda\x35\xa3\x80\xbc\xf8\x52\xef\x3e\xa4\x95\x15\x9c\x76\x97\x91\x25\x21\xc3\x78\xc5\xfc\x9b\x1e\x27\x4a\x6a\x51\x66\x61\x9e\x44\xe8\xcf\x38\x04\x0d\x9a\xdf\x63\x1d\xb2\xcb\x2e\x4b\xd5\x94\xf7\xff\x42\x53\xbc\x6b\xa6\xdb\x9b\x52\x89\xaa\x9a\x4d\x51\x8b\x53\x35\xe3\xd5\xed\xc3\xca\x5a\x2e\x53\xeb\x43\x4d\x4e\xf4\x30\xdb\xbd\x57\x01\xbd\xf3\x2f\x03\x3d\xd6\x40\x15\x19\x50\x00\x9f\xdd\x0e\x10\x06\x66\xbd\xd6\xca\x57\xb2\x42\x51\xb0\xb9\xb5\xd7\x2b\x11\x54\x21\xc9\x65\xa2\x43\x24\x58\x26\x40\xc1\x7f\xfe\xf7\x1b\x6c\x76\x10\x3a\x99\x12\x0d\xb8\x87\x10\x39\x32\xb0\x35\xce\x2b\xc8\x4f\x6f\x87\xdc\xd6\xe2\xea\x52\x30\xd2\x07\x30\x59\x53\x12\x93\x54\x3a\xa3\x15\x4c\x58\xc5\xc7\x9b\xfe\xed\x26\x18\x93\xbf\xbf\xf2\xfc\xcc\xaa\xe1\x9f\x13\x4c\x14\x8f\xa3\x9e\x7f\xfc\x52\x27\xba\x8d\x4e\x84\xc0\xce\xdf\xde\x6e\x9f\xaf\x37\x4d\x3f\x4b\x30\x8e\x58\xfd\x22\x14\x3c\xa6\x82\x23\xa6\x84\x20\x99\xff\x7c\xf8\xfa\xa0\xae\x0c\x6e\xa8\xa3\x65\x38\x6d\x14\xf4\x36\x35\x73\x0d\xa2\x4d\xa3\xfc\x6b\x81\xec\xc6\xba\xf7\xbf\x25\x74\x37\x36\x41\x12\xb4\x2f\x8d\xf7\x6f\x5f\x92\x9f\x20\x95\xb3\x8b\xfc\xac\x4a\x1d\xfd\x96\x40\x44\x74\x75\xc4\x68\x14\x68\xf8\xc6\x33\x8d\xf8\x2d\x31\x2a\xc8\xbb\xb1\xef\x32\x0d\x63\xf2\x53\x05\xa9\x51\x49\x3b\xa4\x9f\x6e\x82\x54\x3a\x7f\xad\x1f\x12\x5f\x4f\xc4\xb8\x05\x39\x63\xd7\xc2\x18\x0e\x9b\x94\x13\x26\xbd\x30\x77\xda\x11\x87\xb0\x96\xfd\xb7\xe5\x51\x60\x18\xe8\xf8\x64\xfd\x79\xba\x90\xcc\xb7\x5c\xac\xac\x62\x5b\x41\x3c\x63\x3a\x12\x99\x89\xd1\xd0\xaf\x26\x03\xb4\xb6\xb5\xee\xa2\xe9\x21\xaf\xe2\x21\x77\x78\xd5\xbd\x5f\x92\xba\xee\xd2\x70\xc4\x36\x1c\x51\x6a\x9b\x71\x3d\x00\x9a\x87\xab\x8e\x7b\x6c\x3a\xf6\x5f\xa2\x55\x39\x62\x77\x77\xc6\x1f\x12\x33\x30\x21\xc7\xa4\x3b\x68\x73\x31\xc2\xf0\x6a\xc9\xb5\xae\xc1\x84\x4d\x21\xe2\xf1\x17\x3a\x29\xc6\x6d\x5e\x59\x52\x26\x42\x49\xbe\x54\x34\xe4\x18\x47\x7e\xab\x6e\x68\x52\xab\xdf\x17\x68\xe5\x97\x66\x80\x83\x27\x7e\x8c\x2b\x95\x28\x37\xc8\x7f\x24\x61\x8b\x7d\x25\x5e\xa1\xe3\x3c\x5f\xb0\xd8\x33\x5f\x88\xc1\xd1\x6a\x42\x12\x1a\x93\x98\x76\x87\x78\x04\xae\xf0\x3a\xf3\x36\x8f\x22\x7c\xcc\xfb\xf9\x52\x82\x83\x7e\x3e\x5a\x30\xd9\x59\xc0\x45\x7b\x10\xc8\x3e\x67\xd9\x8c\xf1\x20\x08\xe7\xe6\x91\xda\x34\x32\x07\x97\xf4\x69\xf2\x16\x5e\x9f\x67\x42\xd1\x9d\x7a\x0a\x99\xf7\x8f\x92\xfc\x7c\x99\x2e\x20\x6c\x0d\xc9\x01\x90\x6d\x41\xbc\xd0\xf1\x5c\x32\x48\x3d\x12\x49\xbe\x64\x2f\x66\x34\xc3\x24\x1d\x87\x8b\x9a\x20\x41\x11\xb5\xf5\x1a\x4c\x7c\xef\x5c\x64\xe0\x28\xd9\x7b\xe9\x0b\xc1\xf7\xf2\x4c\xb2\x2b\x9b\x49\xfb\xd3\x37\x99\xf4\x4b\xbd\x60\x2d\xcd\x2b\x8f\xd7\x6b\x54\xb8\x30\xc8\x6e\x88\x8e\x8e\x7e\x7b\xbf\x7f\x74\x78\xf8\xf6\x68\xef\xf5\xc1\xbb\xfd\x0f\xef\x8e\x8e\xd6\xeb\x50\xd2\x96\x74\x4c\x18\x44\xe2\xb2\xe4\x8d\x14\x20\x84\x86\xd1\x3c\xe2\xec\x24\x15\x92\x71\x36\x73\xaa\x5f\xe2\xc6\x0f\xfd\x78\x36\x0b\x53\x5c\xaa\x51\x14\x82\xbf\x35\x59\xe8\x02\x47\x0c\xae\xdf\xe2\x5a\x7c\x41\xbf\x4e\x61\xbc\xde\xf5\xef\xf0\x3c\x97\xfd\x3b\x66\x7a\xfb\xe2\x34\x9e\xe5\x97\x6f\xf3\x1c\xc2\x2e\xde\x54\x1a\xe4\xaa\x25\x26\x0b\x9c\xce\x6b\xf3\x85\x57\x1a\x8d\x24\xb5\xe8\x30\x72\x78\x51\xf7\xe8\x5a\x77\xc1\xc7\x31\x81\xf8\x21\xb8\xd4\x52\xe2\x0a\xca\x31\x9b\xe7\x9c\xed\x01\xb9\x1e\xd5\x5f\xa9\x1c\x4f\xa6\xd6\x09\x8f\x24\x0b\x1c\x4d\x16\xd3\x8a\xf4\x48\x16\x56\xc2\xa4\x9b\x8c\x81\x88\x38\x8d\xcf\xa3\x6e\xac\x8d\x82\xa2\x97\x49\x69\x57\xc2\xcf\x09\x5d\x01\x57\x82\x76\x2f\x62\x19\x73\x70\x6b\xbb\x14\x91\x16\x2d\xe9\x5f\xe3\x60\xd5\x46\x9d\x47\xb3\xf4\x02\x4c\x49\xd3\x19\x58\x76\xb7\x39\x69\xe9\x83\x5b\xbb\x70\x3b\x9c\xa5\x17\x6b\xb1\x8c\x33\xbc\x8d\xcb\x12\x78\xe3\x03\x55\x5b\x3b\x60\xa4\x73\xa4\xb3\x9b\xbf\x5f\xa6\x33\x79\x6a\x3e\xeb\x80\xe3\x84\xb3\xcf\x45\xca\x75\xb0\x0d\x9b\xf5\xfe\x0e\xb8\x1d\x90\x71\x4b\x08\xac\x18\x3a\x7a\x08\x0e\xa3\x23\x84\xc8\x22\x8f\x67\x69\x76\x02\x87\x14\xa2\x96\x69\x21\xd9\x2c\xfa\x25\x09\x7f\x49\xc2\x55\x49\xde\xf0\x70\x82\x4e\x98\x7c\x97\x9f\xb1\x0c\x4d\x31\x26\x2b\x30\x2a\x53\xfb\xc2\xec\x06\xef\xff\x06\xdf\xf4\x89\xa8\xaf\xf3\xea\xf1\x15\xeb\xb5\xaa\x07\x93\x4b\x88\x53\xb1\x32\xfd\xad\x1f\xae\x74\x1c\x65\x26\xdf\x0b\xc6\x75\xc4\xbb\xf3\xbc\xc8\x64\xbd\x3a\x04\xfe\xca\x54\x4e\x0d\x63\x5c\x2f\x55\x7d\xc0\x11\xbc\x98\x6e\xd2\xee\xb0\x24\xda\x43\xa2\x88\x56\x26\xfb\x0d\x5e\xea\x81\xfc\xd5\xca\x0e\xf4\x72\xf2\x87\x10\xf4\x61\xb4\xd3\x01\x18\x92\x20\xd0\x2d\x73\x5b\x1c\xbb\xec\x18\x07\x1d\x24\xa3\xe1\xe6\xf0\xd8\xd0\x98\x97\x69\x36\xcb\x2f\x5d\x7c\x5d\x23\x27\xc1\x3d\xb4\xcd\xd9\x79\x2e\x59\x7f\x79\xba\xdc\x9e\xc5\x17\xdb\xba\x76\xb1\x8d\x7a\x5e\x2f\x7b\x68\x7b\xb8\xf3\xa8\xbf\xcc\x4e\xd0\x88\x9b\x08\xa3\x21\xda\xd5\x17\xd8\x7f\xe9\xe0\xdf\x04\x3d\x65\x31\x67\xbc\x63\x4a\xda\x59\x55\x7b\xbb\x2d\xf1\x61\xeb\x2d\xfb\x5c\x30\x21\xd9\x6c\xeb\xf7\x54\x9e\x22\x82\x3e\xbc\x7a\xf9\x93\x94\x4b\x93\x8e\x30\x01\x4b\xb7\x30\x23\x2b\x6b\xdb\xc5\xcb\xb6\xa8\x02\x70\x49\x94\x9f\x39\x6b\x88\xfe\xf1\x22\x3f\x0e\x81\xcd\xb9\x3f\xb8\x0f\x17\xce\x6a\xa3\x28\x84\x39\xcb\xaa\x91\x32\x86\xed\xef\x33\xe6\x4c\xdb\x21\x0b\xc4\xb2\xeb\x20\x47\x07\x6c\xc9\x2a\x32\x47\xdd\xdb\x98\x37\xdd\x84\xd5\xe7\x4b\x8e\xcd\x48\xbf\x7f\xfb\xb2\xc9\x52\x86\x12\x44\x11\x78\x33\xd4\x1b\x00\x6d\xce\x7b\xad\x1a\x13\x14\xcb\x44\xb9\xfa\x16\x7a\xd2\x31\xdf\x3b\xba\x64\x27\x3d\x8f\x4f\xc0\xca\xbe\xa3\x66\xad\x83\xbe\xb5\x1d\x62\x66\x1a\xc9\xb7\x28\xea\x7c\x0b\x31\x03\x74\x50\x56\xe0\x01\xf4\x0d\x53\x03\x8b\x4b\xed\xd5\xf7\xd7\x16\x99\x86\x76\x87\x4a\x65\xff\x8e\x89\x2b\xb6\x60\x20\xae\x54\xdb\xf6\x91\x60\x0b\xb5\x1f\xaf\xd7\x9e\x6e\xac\xc1\xdd\x31\x0f\x65\xdf\x84\xd7\x89\x4f\x22\x94\xd8\x4d\x08\x95\x64\x22\x6d\xe5\x63\x1e\xa2\x3c\xd9\x12\xcb\x34\xcb\x18\x47\x04\x4c\x8c\x91\xee\xe1\x96\xc9\x83\x88\x90\xd7\x0b\x16\x21\x4d\xb0\x14\xc6\xf5\xe1\xb1\x87\x96\x57\xa3\xce\x29\x4b\x4f\x4e\x65\x33\x19\x91\x58\x4a\xae\x96\x65\xfa\x17\x8b\x90\x38\x8f\x17\x0b\x44\x50\xcc\xd3\x78\x6b\x11\x1f\xb3\x05\x8a\x64\xff\x0e\x18\xea\x5d\xc9\x10\xbd\x34\x55\xa9\x13\x76\xa4\xdb\x14\x1b\x22\xbe\xd1\x24\x36\x73\xc0\x75\x8b\x4c\xbd\x44\xf0\x24\x92\xb5\x89\x25\x48\x4d\xc5\x96\xda\x15\x90\x51\x38\x51\x34\xbb\x2c\xf1\x94\x0c\x71\x24\xfb\x47\x2c\xc4\xe5\xe8\xd7\xa4\x7f\x74\x99\xca\x53\x45\xa4\x21\xe0\x7b\x77\x60\xf6\x94\xdf\xab\x3d\x25\x49\x14\xe1\x12\x2f\x53\x21\x11\x71\xa3\x29\xa2\x95\xa6\x86\xd1\x1f\x49\xb8\xd2\x1b\x67\xf4\x6b\x42\x1a\x6c\x53\x34\x99\x96\xc6\x53\x05\xf9\x39\xb1\x4f\xdd\xe1\xe6\x53\xed\x0f\x2e\xed\x1e\x16\x9b\xea\xcd\x7e\xa1\x1d\xc5\x55\xdb\xc5\xc0\xa2\xd0\x9f\xff\x3a\x0a\xf1\x50\x6f\x8b\x13\x3d\x0f\x12\x9c\x18\x91\x95\x19\xf2\xf3\x74\x36\x5b\xc0\x66\x33\x4b\x2f\x52\xd5\x5b\x84\xca\xb2\x96\x79\x0b\x3c\x70\xd7\x01\x6c\xf1\xfc\xb2\x91\x92\x30\x85\x12\x16\xae\x38\xe5\x69\x76\xa6\xe0\xea\x9b\x20\x45\x8f\x90\xda\x5d\x64\xff\xe8\x22\xd4\x4e\x7d\x6e\x2c\xec\x17\x21\xb3\xfc\xfc\x8d\xd9\xf8\xd9\x95\xdc\xd3\x06\xb1\x6a\xae\x45\xe8\xa3\xdc\x7b\x23\x6b\x42\x10\x81\xe7\x3f\x56\xcd\xb3\x54\x2c\x17\xf1\x75\xe7\xbf\x50\xd5\xfe\x79\x9c\x2e\xbe\xa6\x0e\x8d\x9c\x7b\x8b\x58\x88\x08\x15\x67\x5b\xaa\xf8\x56\x96\x5f\xf2\x78\x59\xad\xdb\xd6\xf9\xf8\xea\xc1\x4d\x67\x1d\x63\x7c\xf3\x7f\xa2\x3d\x3f\xfe\xad\xf6\xfc\x5b\xaa\xdc\xd7\x74\x58\xd7\xa7\xc8\x8d\xfa\xef\x86\x7a\xcd\x82\x91\xfd\xa3\x45\x28\xfb\x76\xad\x93\xb6\xe3\xfe\xc6\x9a\x32\xf4\x51\x97\xd9\x5a\xa4\x42\xaa\xf4\x2d\xd4\x63\xfd\x74\x56\xb6\x2d\x39\x95\xe4\xa8\xab\xe9\xab\x4f\x28\x19\x04\xa0\x5c\xc4\xd7\x07\x60\x43\xc2\xfa\x4b\xce\xe6\x8c\x73\x36\x53\x09\x96\xaf\x55\xe0\x0d\x0f\x7b\xef\x81\xe9\xe2\xed\xc3\x7a\xcb\xc0\x35\xea\xf8\xf2\x14\xdd\x0a\xab\xd6\x7c\xb4\x85\xfe\x45\x70\x6a\x59\xfd\x8b\x20\x8a\x74\xa6\x59\xfc\x7f\x47\x7b\x4e\xfe\x26\xb0\xd6\xe5\x95\x40\x58\x56\xc5\x0c\x30\x8b\x70\xfb\x8e\x73\x50\x20\xd2\x44\xb1\x99\x16\x3f\xf4\x26\x08\x21\xed\xd5\x81\x89\xa7\xc0\x86\x46\x48\x14\x89\xf6\x83\x79\xe3\xd6\x6e\x36\xce\x4e\x2a\x3a\xcc\x2e\x89\x6a\x97\x6f\xab\x65\xc6\x96\x9c\x25\xb1\x54\x1b\xbd\x57\xd5\x2c\xce\x4e\x14\x8f\xf2\x35\x35\xcd\x52\x51\x55\x65\x17\x5f\x89\xb1\x79\x82\xb7\xd1\x9f\x2d\xdb\xbe\x93\xcc\xc8\xe2\xff\x69\xe9\x1e\x2b\xfe\x23\xd2\x3d\x59\xfc\x5f\x94\xee\xf9\xad\xfa\x2f\x48\xf7\x34\xeb\xc8\x0b\xc7\x3a\x2e\x97\x0d\x8e\xd1\xe3\x25\x7d\xbe\xf1\xcf\x5b\xf9\xc6\xdf\xff\x16\xdf\xe8\x4e\xff\xac\x08\x59\x61\x4e\xff\x8e\x8b\x45\x64\x82\x52\xf1\x22\x4b\x65\x1a\x2f\xd2\xbf\xd4\x4a\x43\x27\x4c\xda\xcf\x87\x39\x57\xab\xcf\x4a\x08\x1c\xf3\x79\x83\x88\x60\xa3\xa4\x22\x49\xf6\x60\xae\x2b\x7f\xd9\xac\xdc\x55\x0d\xb5\x68\xc6\xb4\x26\x14\x00\xc8\x55\xb6\x10\x1b\x0e\x37\x2b\xda\x39\xdc\x26\x77\xab\xcf\xfd\x1e\x83\xeb\x6e\x83\x99\x65\x70\xed\xc3\x06\x85\x4c\xf2\x4c\xc6\x69\xc6\x78\xa7\x38\xdb\x5a\xc6\x33\x38\x9b\x94\x50\xe0\x74\x88\xc8\x44\x43\xbe\x08\xd1\xc7\xac\x03\xff\xb3\x5d\xd3\xef\x08\x4f\x4d\x0c\x4d\x4b\x95\x75\x67\xfc\x01\x1f\x2b\x60\x76\x60\x61\xdb\xae\xc8\xa0\x1b\x6f\x2d\xa1\x30\x6f\x8a\x92\x45\x0c\xa8\x26\x1c\x83\x38\xc2\x53\xb2\x83\xa7\xb8\x1c\x65\xc5\x4d\x07\x98\xbc\xa0\x1e\x82\x65\xc5\x6d\x08\xc6\x8b\xaf\x47\x30\x98\x8a\xb4\xa0\xa2\x3f\x27\x71\x71\x7b\x3c\x28\xcf\xb1\x37\xc9\xe8\xb5\xf6\x50\x71\x20\xc3\x0c\x83\x07\x2a\xe3\x68\x2b\xa1\x03\x08\x90\x30\x4a\x9f\x24\x23\xf0\xc6\x91\x58\x17\xdc\xa9\x89\x79\x92\x11\x8e\xd7\xeb\xc2\xf8\x8f\x1a\x4f\x38\xc9\x26\x7c\x3a\x8d\xd4\x2f\xae\xac\xc2\x4b\x92\x14\x74\x65\xfd\x2b\xc5\x45\xd8\x1d\x60\xeb\x9e\x49\xbd\x0d\x71\x69\xc3\x1a\xf8\xc1\xb0\xf4\x42\x47\x36\x26\x64\x69\x7c\xae\x8b\x36\xa9\x60\x52\x80\x30\xcb\x68\x8a\x15\x94\x7b\x61\xfc\x8a\xba\x48\x5f\x3b\x3a\x85\x00\x10\x60\xdb\x1d\xc6\x98\x14\xd4\xf8\xeb\x6b\xaa\xce\xe8\x58\x17\x20\x29\x4b\xc0\x51\xe0\x98\x85\x05\x8e\x4c\xe8\x4f\x17\xe4\xbf\x30\x82\x92\x8c\xe4\x26\x38\xe0\xed\x53\xd0\x88\xd7\xe8\x28\xb7\x1f\x37\xd5\xd4\xe1\x91\x45\x08\x4b\x63\x7d\x34\xeb\xdd\x04\x74\x16\x5c\x57\x63\x08\x38\x59\x84\x29\xf4\x35\x26\x09\x41\x19\xbb\x92\x88\x48\xef\x9a\x2c\xd9\xcc\x04\x32\x22\xc8\x15\x87\x55\x9c\xb2\xb2\x24\x0b\x85\x00\xa0\x4a\x42\x96\x05\x9d\x75\xcd\x0e\x4a\x4e\x0b\xfa\x27\x0b\x91\xfa\x80\x08\x22\x08\xd7\x26\x0e\x0e\xc3\x9b\x41\xcc\x96\xc5\x7a\xdd\x3d\x2d\x4a\xb2\x52\xe5\x5a\xc3\xc9\x18\xbc\xba\x36\x9a\x03\x2e\xa0\x9a\x1c\x23\x82\xa2\x6a\x86\x67\x05\x4d\x14\x1f\xb8\x24\x17\x05\xfd\x8d\x85\xe8\x3c\x5e\x22\x4c\xae\x0b\xfa\x87\x7d\xf9\x9a\x16\x75\x2f\x54\x93\xae\x55\x93\xce\xe3\x65\x5b\x8b\x66\x85\x89\x55\xfa\x95\x4e\xcd\x5c\x0b\xcf\x0b\xed\xd3\xe8\x3c\xbe\x22\x27\xf6\x39\xcd\xc8\x71\xe1\x7b\x3e\xba\x2c\xe8\xf6\xc7\x3b\xe1\xe4\x4e\xf0\xed\xff\x4c\xd7\x1f\x67\x1f\x67\xe3\xf5\xe3\xc9\x3f\x9f\x4c\xbf\x7b\x82\xb7\x4f\xc8\xe1\xe6\x67\xbc\x7d\x02\xb1\x5d\x6c\xec\x23\xb2\xb3\x19\xbd\xc8\x3a\xff\xce\xfa\x7f\x27\x9a\x10\x49\xa1\x40\x3d\x24\x11\x89\x69\x3e\x46\x77\x50\x84\xee\x0c\xac\x2a\x5e\x15\x36\xc6\xab\xcb\x06\x8e\x49\x4d\xe0\x18\x6e\x03\xc7\xf0\xb6\xc0\x31\xe9\x38\xb5\x71\x91\x72\x92\xe1\xc8\x5c\x8d\x38\x5d\x51\x1d\x4b\xc9\x0b\x1a\x63\x63\x95\xe7\x41\x90\xae\xd7\x1b\xfe\x30\xb3\x20\x80\x58\x8c\x99\x8b\xbb\x18\x63\x1b\xef\xa9\x8a\x33\x43\x32\xe3\x2d\xc7\x8f\x34\x53\x98\x85\xaf\x32\x0b\x1d\x69\x66\x5e\x8b\x34\x43\x5a\x43\x4e\x67\xa3\xc5\x7a\x1d\x66\x2e\x66\x87\x71\x3c\xbe\xa4\xc2\xc4\xa4\x01\x47\xda\xba\x0d\xa7\x54\xb8\x50\x34\xc2\x0f\x45\x53\x5a\x3a\x3c\x53\x74\xd6\xf8\x23\xbf\xa0\x07\x69\x28\xc8\x1c\x7b\x1e\x8a\x2e\x8c\x3f\xee\x74\x1e\xce\x4c\x00\x5a\x4c\xba\x4b\x93\x0a\xca\xd7\x36\xac\xdf\x64\x00\xfe\xcd\x44\x3d\x32\xcd\x9c\x08\xe9\xa7\x61\x72\x8a\xb1\xab\xfe\x9a\x9c\x53\x84\xc8\x09\x1d\x90\x63\x3a\x18\x1d\x3f\x9e\x59\x8e\xf3\x18\x38\x4e\x3a\x9b\x1c\x4f\x9d\x7a\xce\x65\xad\x2e\x72\x48\xcf\x8b\xf0\xa4\x08\x13\x19\x5e\xe8\xe1\xc7\x64\x6e\x1d\x0d\x91\x01\x26\xfb\x74\x32\x25\xaf\xe9\x70\xf4\xfa\xf1\x85\x85\xfb\xba\xd7\xc3\xfb\x7e\x28\x5d\x4a\x69\x78\x4d\x2f\x26\xaf\xa7\x78\x7c\x6d\x75\xe3\xae\xcd\xa8\x1e\xd1\x0b\x13\x45\x0e\x6c\x95\xf4\x38\x7d\xa2\x93\x4b\x77\x79\xb5\x4f\x0e\xd5\x88\x39\x04\x3b\x0a\x82\x4f\x1a\xfc\x91\x06\x71\xe5\x66\xca\x50\x4e\xb3\x7d\x7e\xb2\x22\xe0\x2b\x9a\x84\x97\x64\x4e\x0e\xc9\x3e\x39\x52\x98\x72\xf8\x84\x9e\x04\x41\x78\xde\xa3\x73\xa3\xec\x71\x42\x0e\x71\xef\x8a\x9c\xd0\xc3\xde\xa5\xed\xa0\xe5\x32\xcf\x7b\x2e\x17\x2e\xa7\x23\x9f\xda\xfa\x5b\x8f\xde\x76\xb2\x9e\x0b\xc7\x57\x54\x1b\xae\xa0\x87\xc5\xe6\x4a\x01\x4d\xfc\x77\x32\x4c\x31\x11\xf4\xb2\xc0\xc4\xac\x95\x98\xd4\xe4\x11\x16\xb8\x18\x19\xd3\xf8\xd8\x77\x13\x96\xc4\x82\xa9\x55\x6c\x54\x40\xef\x20\x50\x39\x47\x81\x4d\xe9\x48\x9d\xf0\x3f\x2e\x81\x3b\x27\x0e\x19\xd6\xdf\xbe\xdd\xf8\x96\x98\x2f\x8f\x51\x24\x68\x3a\x89\x7d\x7f\x62\x53\xa3\xda\x6e\x6f\xcd\xb4\xa7\xfd\x5e\x3c\xd2\x8e\x74\x9c\x87\x9a\x0e\xc4\x25\x9a\x3f\x29\x74\xf3\x17\xf4\xb8\x08\xe7\xdb\xc3\xca\xc1\x87\xca\xbc\x18\xb3\x68\xf1\x98\x16\x63\x87\x2b\xf9\x64\xb1\x35\x9c\x8e\xe3\xca\x61\x45\xa4\x93\x7a\x7e\x12\x2b\x05\xcd\x27\xf3\xad\xa1\xbb\xd4\x74\x00\xc4\x18\xa1\x48\x94\x3a\xda\x37\x60\xc8\x7e\xd1\xaa\x87\xd8\x69\x71\xd6\xa8\x6f\x9e\xb4\x6b\xf6\xe6\xbe\xd0\xea\x16\x8a\x4f\xb2\xa9\x77\x58\xcb\xbc\xe8\x88\xd5\x3e\x5e\x96\xe4\x75\x61\xcf\xa8\x5e\x00\x76\xa3\xe5\x53\xe1\xd4\x51\xe1\xe9\xf6\x4e\xb4\xdf\x1b\xdd\x9a\xa9\xa2\x04\xaf\x0b\xeb\xd5\xbe\xda\xf4\x3f\x15\x4d\x9e\x06\xb6\xd5\x2a\xc3\x95\x9f\xc1\x1a\x2d\x06\xc1\xa6\x57\x9d\xaa\xc8\x6e\x5b\x33\x9e\x9b\xaf\x37\xb6\xe4\xac\x70\xae\xc2\x4d\x60\x62\xdc\x16\x87\x0d\xec\x58\xe8\x44\x4e\x31\x81\xee\x56\x6e\xd2\x37\x83\x5d\x68\x8f\x41\x9a\x23\x05\x7f\x13\x13\x3e\x25\x9c\x48\x2f\xde\x09\x6c\x52\x9d\x34\xeb\x48\xbc\x31\xc0\xa7\xb1\xf0\x4e\x92\x36\x88\x5a\x8e\x9d\x8e\x81\x01\x9a\x4f\x49\xae\x78\x24\x05\xeb\x4d\x41\x57\xa9\x80\x31\x8f\x8e\x0a\x62\x1e\x9f\x16\xf3\x39\x6b\xbb\xb5\xae\xcf\x92\xce\xd6\x1c\x21\x92\x8a\x1b\xcb\x7b\x33\xd2\x85\xa9\x0c\x02\x67\x58\xea\x45\x60\x34\x5f\xfd\x24\x1c\x04\x6d\x11\x6e\xfc\x2c\x7d\x5b\x71\x10\xb4\xa7\x9b\xd6\x3d\xcf\xf9\xf9\xb3\xda\xbd\x77\xd5\xbf\x4a\xa1\xc3\xcd\xa0\xcd\x1e\x04\xd2\x37\x16\xb1\xc9\x65\x7d\xd0\x7e\x4b\xd9\xe5\x57\x02\xf6\x4a\x05\x81\xf7\xd2\x4f\x85\x82\x32\xde\x4c\x0a\x25\x8e\x40\x3b\xe4\xd8\xf5\x53\x3f\xf9\x0d\xf3\x8a\xa9\xb6\xe9\x45\xd7\xd6\xa4\x26\xf3\x21\x55\x76\x2d\x00\x6c\xcb\xbe\xe1\xf3\x4a\x65\xd7\x48\x18\x5d\x29\xd4\x79\x6f\xbb\x18\x7d\x52\xaf\xcf\x62\xd9\x16\x36\xdf\xa1\x90\xfa\xde\x82\x3b\xcf\xd3\xc5\xad\xc5\xd4\xf7\x36\x94\x5b\xe4\xc7\xb7\x15\x53\xdf\xdb\x6a\x33\x25\xa2\xdd\x42\x8f\x15\x8b\xcf\xdb\xf0\xf6\x4a\x23\xab\x22\x15\xfd\x65\xba\x64\x50\xb8\xe9\x79\xf4\xeb\xa6\xbd\x51\xaa\x81\x56\x8d\xaf\x7a\x06\xe3\x6c\x16\xf3\xd9\x53\x9e\x5f\x0a\xc6\xf7\xb3\x8b\x4d\x79\x49\xd8\xa6\x8a\x94\xc5\x17\xe9\x49\x2c\x73\xbe\x5e\xa3\xb7\x2c\x4e\xe4\x41\x2c\xd3\x0b\x06\x31\xca\xec\x27\x45\x3f\x66\x45\xa2\x48\xa4\xfe\x7a\x08\xf2\xa7\x1b\xf3\x1c\xb6\x7e\x01\xe7\x4b\x2d\x7d\xd5\xb7\xe8\x41\xd0\xf6\x6d\x96\x27\xb0\x8d\x78\x0e\x9a\xcf\x0a\x72\xce\xf8\x49\x35\xff\x1d\xe9\x87\x88\x75\xa9\x5c\x73\xec\x1b\x44\x9d\x4d\xb2\x69\x0b\xad\xe7\x63\xf5\x81\x4a\x70\x69\x4e\x38\x8e\xe0\x95\x97\x9e\x9e\x76\x8b\x8d\xd9\x28\x7b\x9c\xc3\xa6\x77\x56\x84\xfe\x96\x47\xb8\x17\xb8\x83\xcc\x18\x5b\xbe\xfa\xaf\xb5\xb9\x25\x9b\x0c\x57\xa5\xfa\xfe\xef\xe9\x0e\xbb\x92\x4d\x8f\xfa\x9e\x8e\xd6\x59\x11\xb2\x1a\xb3\x96\xe1\x95\x84\xb1\x6c\xa5\xce\x6c\xbc\x5f\xe8\x90\x9a\xac\xc4\x98\xc8\x92\x48\x9e\xb6\x2e\xaf\x2a\xd0\xca\xf6\x3f\x3f\x8a\xef\xb6\x09\x42\x95\xab\xd5\xed\x8f\xe2\xbb\x3b\x90\x54\x7a\xe3\xf9\xb2\xf8\xea\xb8\x25\xdb\x77\xef\x0f\xb6\x4f\x52\x82\xfe\xe1\x43\xbd\x7b\x6f\x17\x12\xa3\x5a\xe2\xce\xfd\xed\x13\x82\xee\xd4\xd3\xf6\x20\x23\xa9\x27\x0e\x54\xc6\x5e\x2d\xed\xc1\x53\xc8\x38\xa9\x27\x3e\x83\xc4\x29\xd2\x3b\xee\xdb\x62\x23\x18\x17\x38\x0d\xa9\x1c\x82\xc2\x1c\x82\x45\x21\x86\xe8\xa2\x95\x35\xe2\x9b\xa2\xbf\x41\x75\x42\x86\x71\x46\x2b\xf6\xca\x7a\x66\xd2\xc7\xd9\xc9\x74\xf4\xa6\x70\x92\x69\x46\x1a\x21\x4a\x0c\xe7\x12\x04\x1a\xb4\xe6\x04\xc1\x96\x8a\xa2\xc9\x14\x45\xc0\xb9\x10\x0f\x82\xac\x2b\x35\x43\x29\x45\xc8\xc1\x8e\x14\x3c\x8c\xbd\x38\x7c\x6d\x1b\x12\xc1\x67\x23\x21\x97\x5a\xe1\xfc\xe7\xc3\xd7\x07\x26\x26\x78\x3a\xbf\x06\x7d\x47\xe3\xea\xf9\x65\x01\x56\x4c\x14\xf5\x60\x6a\xc1\x0d\x34\x44\x99\xa7\xb9\xe7\xf7\x1b\xec\x5a\x9c\xf0\xc8\x9e\x92\xd1\x37\x08\x8f\xb6\x86\xe6\x9c\x51\xa9\xb5\x0f\x48\xaa\x10\xaf\x47\x43\x38\x56\x7b\x05\xc6\x08\x8f\xd1\x18\x45\x0a\x68\x2f\xab\x64\xec\x15\x82\xed\x15\x56\x58\x7c\x1a\x67\xb3\x05\xe3\x82\x4e\xa6\xe5\x5e\xe1\x71\x5c\x85\x60\xed\xbc\x76\xad\x98\x71\xb2\x3f\x2f\x16\xf3\x74\xb1\x60\xb3\x48\x12\xce\x3e\x81\xe6\x92\x5a\x18\xa4\x9e\xd9\x7a\xbc\x2d\x49\xad\x2a\x28\xb0\x19\xde\xc6\x16\x9b\xc8\xa9\xea\x78\x23\x49\xfb\xb0\x6a\x40\x32\x53\x49\x1b\xf3\xe8\x66\xd8\x87\x51\xbf\x29\x36\xac\x1a\x0b\x02\xa9\x83\x70\x6b\xc1\xf9\xbb\x82\xee\x15\xe4\x60\x13\xaf\xcd\x60\x78\xc0\xb9\x07\x90\xe3\x95\xa4\xfa\xa2\xc9\x50\x87\x17\x6d\xc2\xc6\x6e\xd8\x95\xeb\x75\x57\xf6\x8f\x8e\xf6\x76\x0f\xf6\xf6\x5f\x1e\x1d\x61\x6f\x96\xde\xeb\x59\x6a\xe8\x86\x09\x26\xdf\xa5\xe7\x2c\x2f\x64\xe7\x34\xd6\x61\xb3\x8e\x19\xcb\x3a\x76\x13\xf2\xf8\xf8\x57\xad\x00\x92\x05\x8b\xf9\x17\x40\xa8\xbe\xdf\x29\xe8\xfb\x82\x3c\x2b\xe8\xab\xa2\x6a\xd3\xf3\xc2\xa8\xb6\xdd\x29\xd4\x09\xcd\xb5\xc5\x2e\xf1\x2a\x45\xbb\x80\x4c\xe7\xa1\xce\xfa\xbe\x58\xaf\xbb\x77\x0a\x1c\x04\x9b\x85\xee\x14\x1e\x24\xd2\x04\xe1\x99\x53\xde\x29\x20\xa9\x8a\x72\x55\xfb\xe6\x9f\x04\x6a\xb9\x1a\x39\x8c\xb4\x70\x80\xcb\xb2\x6c\x21\xed\xa7\xbc\x5f\x35\x21\x08\xc2\x5a\xeb\x30\x69\x2f\xe1\x0f\x6a\x10\x84\xcf\x0a\xea\xa7\xe8\xd3\xeb\xd3\x82\x7c\x86\x70\xc6\x3f\x16\xb4\x3b\x24\x7f\x15\x74\x6b\x58\x8d\xec\x6f\x6a\xb2\x7e\x2c\x82\xe0\x69\x11\x04\xa1\xce\xf2\xd4\x7a\x83\x1e\x7f\x2e\xe8\xd3\xc2\x4a\x52\x3e\x17\x38\x82\xd2\xe4\x73\xe5\x56\xfa\xa7\x22\xf4\x2d\x2d\xd4\x2b\x50\xdf\x1f\x0b\x7b\xe3\xf3\xbc\x08\x7f\x2b\xf0\x48\x81\x1e\x78\x01\x42\x1c\x8c\x11\x1b\xe9\xf3\xf3\xd3\x82\x7e\x36\x6d\x1d\xf5\x7a\x7f\x15\x8f\xd9\x08\x3f\x85\x96\x4d\xfe\x2a\xa6\x7d\x5e\x64\x21\x1e\xe9\x06\x78\xc5\xcb\xa7\x85\xf6\x25\xa8\xdb\xde\x50\x85\x7c\xa6\x90\xa0\x36\x26\xf6\x5a\xc0\x4b\x33\xf7\xc4\x3a\xf3\x2b\x85\x31\xcf\x14\xc6\xb4\x15\x6b\x8c\x30\x69\x82\x51\x98\xf1\xac\xa8\x85\x44\xf3\x90\xe5\x59\x0d\x59\x36\x51\xe5\x59\x0d\x55\x14\xa2\xc0\xdd\x45\x65\xc7\x52\x78\xaa\xba\xf3\x22\xa3\x46\xd1\x3c\x56\xbb\x0c\x65\xe5\x07\x9f\x2a\xf1\x22\xa3\xcd\x4b\xba\x79\x61\x85\x5c\xba\x09\xae\xb0\x4f\x00\x7e\x51\x73\x08\x6b\xf1\x8f\x82\xfe\x52\x90\x9f\xe1\xf7\x57\xf8\xfd\x1d\x7e\xff\x84\x5f\x29\xd4\x2f\x53\xbf\x3a\x16\x90\xa0\xa7\xbc\xbf\x64\x7c\x9e\xf3\x73\xc5\x7c\xaf\xd7\xab\x92\x64\x82\x72\xd1\xcf\xf2\xcb\xf5\x9a\x8b\xfe\x79\xfe\xd7\x81\x7d\x14\xf6\x29\xb7\x0f\x97\xec\xf8\x2c\x95\xf0\xb6\xc9\x8f\x2b\x5a\xa2\x36\x46\x88\x41\xac\x86\x3c\x34\xd4\x32\xd7\x06\xff\xea\x9b\xbe\xeb\x12\x74\x95\xb1\x2b\xf9\x2e\x4d\xce\x5a\x74\x8c\x6f\x16\xd0\x6c\x0d\x01\x0f\x36\xe5\xf9\x9e\x88\x61\x38\xe2\x9b\xb7\xef\x20\x66\x98\xf0\xad\xa1\x2f\xca\xe1\xd3\xd1\x67\x73\x01\xa6\xaa\x34\x73\x87\x89\xda\x53\x1d\xf6\xae\xd7\x3f\x16\xeb\xf5\xf3\x22\xfc\xa9\xc0\x25\x91\xa9\x5c\xb0\x08\x1d\xeb\x63\x09\x22\xe6\x41\xdb\xb5\x5e\x44\xab\x92\xc4\xfc\xe4\x22\x9a\x4c\xc9\x05\xe3\x02\x54\x2d\x90\x7d\x14\xea\x73\x9e\x45\x7f\x14\x24\x9e\xcd\x5e\xa6\x42\xb2\x8c\xf1\xe8\xe7\x82\xe4\x59\xc2\xa2\x5f\x0b\x92\xcf\xe7\xd1\xef\x05\xe1\xec\x3c\xbf\x60\x2e\xc3\x9f\x36\x65\x77\xb1\xb0\x89\x22\x92\x82\xb0\xf3\x54\x46\x4c\x90\xe3\x34\x9b\x35\xcf\xbb\x1b\xd4\xdd\x04\x59\xed\x9b\xcc\x36\xb2\xa2\x28\x96\x4b\x7d\x41\x8d\x4b\x92\x5c\xb6\x68\xae\xa3\x6d\x54\x92\xe4\x74\x96\xf2\xaf\xab\x00\xb2\xb6\x82\x2f\xce\x63\x71\xd6\x72\xef\x3d\x28\xc9\x29\x97\xe9\x39\x6b\xc1\x85\xfe\x60\x30\xfc\x2e\x13\xe6\xc6\x01\x2c\x52\xab\x3b\x98\x90\x29\x56\xc9\x7f\xbf\x3b\xfc\x6e\xc8\x7e\xa8\x42\x33\x07\x41\xc8\xb7\xa8\x9c\x0c\xa6\x24\xcc\xd4\xc3\x70\x8a\x1f\x0f\x20\x75\x8b\x64\x3d\xaa\x32\x63\x32\xe1\x24\x9b\x96\x64\xb9\x88\xa5\x5a\x19\xde\xfc\x72\xb6\x60\xb1\x60\x6a\xe6\xb4\x5a\x7a\x04\xd1\xd3\xea\x8d\xdd\x58\x00\x5b\xb9\xc0\xdb\x43\x76\xaf\x2c\x49\x2c\x1a\xdc\xd2\x0d\x8c\x25\x1c\x94\x32\xcd\x69\x64\x7d\x99\xbf\x5f\x2e\xad\x33\x1b\x4a\x81\xd5\xf5\x52\x14\xdb\x33\x61\x53\xca\x4d\x74\xae\x8e\x3a\x90\xe8\x78\x80\x89\xd8\xf0\x30\x4b\xf2\x4d\x79\xe8\xe6\x27\xab\x77\x4f\x19\xe1\xe0\xc6\x44\x9d\x2e\x28\xc7\x44\x9d\x53\x40\xc3\x9d\x66\xf0\x2c\x96\x79\x26\x18\xcd\x89\x54\xdc\xf3\x55\x9a\x0b\x40\x00\xed\xc1\x53\x5b\x46\x6e\x5a\x9e\xaf\x8c\xda\xb6\xbe\x85\x37\x2f\x04\x54\x3a\x20\x05\x9c\x4e\xcc\x8c\x22\x88\x5a\x36\x90\xea\x25\x10\x2d\x8a\x31\xb9\xb5\x85\xc7\x3c\x5d\xb0\x03\x07\xc2\xbe\x91\x45\x9a\xb1\x03\x2f\x77\xf5\x4e\x92\x7c\x51\x9c\x67\xfe\x47\x3f\x85\x08\x19\x27\x67\x3a\x1d\x1e\xed\x9c\x9b\x9c\xea\x99\xa8\x61\xb1\x09\x33\x56\x96\x44\x96\x61\xb5\x0a\x24\x76\x03\x5b\x92\x42\xd0\x09\x8a\x4f\x20\x76\x4c\xc3\xe0\xc0\x86\x96\xd1\x34\xc6\x4b\x30\xb1\x66\x98\x8c\x4f\xd4\x9f\xab\x65\xca\x99\x40\x04\xcd\x79\x7e\x8e\x08\x02\x0f\x51\x04\xa5\xf3\xad\xf3\x7c\x96\xce\x53\x36\xdb\x12\x69\x96\x30\x9d\x56\x64\x1b\xa9\x8b\x58\x48\x97\x57\xbd\x1b\x33\x0a\x44\xd0\x79\x7c\xb5\x35\xcf\xf9\x65\xcc\x67\xaa\x86\x25\xcf\xaf\xae\xb7\x9a\x0d\x05\x4d\x42\xd0\x14\xe3\x4c\xf2\xeb\xad\x78\x2e\xe1\x0d\x54\x1c\xe3\x13\x96\x49\x34\x25\x42\x50\x38\xf6\x6c\x4a\x6d\x42\x2f\x2c\xb9\x0b\xa2\x45\xb7\xc3\x73\x91\xb2\xb5\xe4\xe9\x8c\x65\x12\x6f\x9b\xf8\x20\x95\x88\x45\x41\xdf\x55\xc0\xd5\x7a\xb7\x42\x93\x7e\x4d\x27\x05\x62\xdc\x57\x5b\xa2\x23\x19\x19\xad\x74\x53\xd4\x3a\x57\x3c\xdb\xae\x94\x3c\x3d\x2e\x24\x0b\xd1\x29\x67\x73\x44\x32\x1d\x18\x52\xbd\x60\x72\x63\x16\xed\x8d\x40\x67\xab\x9c\x00\x70\xe7\x33\x66\x5c\x3d\x56\x67\xdf\x48\x1f\xdb\x15\xdd\x07\xe3\x76\xae\x5d\x5b\x18\x53\x6c\x6e\xac\xa1\xc7\xf6\xc1\x17\x02\x8c\xab\x92\xb1\x50\x79\xd5\x9f\xb1\xfe\xe3\xe5\xfb\xa6\x56\x01\xac\x21\xee\x7c\xce\x68\x5b\x75\xae\xdd\xb4\x38\xdb\x72\xed\xb9\x9b\x3b\x8f\x33\x5e\xe8\xc1\x2a\x51\xe5\xea\x55\xaf\xa5\x3b\x20\xd2\x2c\x6c\x1a\xe1\xe8\x91\xf3\x0f\x4a\x7a\xf3\x35\x68\x00\x67\x61\x86\xc7\xea\x4b\xe4\x85\xde\x74\xde\x76\xc0\xe1\x94\x79\x09\x02\xdd\x7c\x6a\x3d\x9f\x95\x65\x88\x37\xa9\x6b\x77\x50\x92\xf9\x6d\x88\xb6\xba\xe4\x69\x4d\xfc\x5a\x69\x8e\xe8\xe6\xc5\x8a\x6f\x8d\x8d\xc6\x0b\x9c\xba\x5b\x64\x28\x8a\x01\x80\x3a\x34\x4d\x80\x60\x52\xa6\x8c\x5d\x8e\x14\xf5\x2c\xa5\x0f\x39\xee\xcb\xfc\xc7\x57\xef\xec\xf9\xdf\x14\x76\x57\xcb\x55\x61\x30\xd3\x47\xbd\xac\x9e\x23\xf7\x72\xcc\xf2\xf3\x38\xcd\x28\xea\xe5\x98\x74\x07\x14\x0e\xf6\xf6\x9b\x60\x49\xc1\x19\xc2\xa4\x5a\x0d\x79\x7e\x96\x32\x6a\xdd\xd9\x8c\x3a\x10\x7e\x99\xc5\xb3\x96\x5d\xb4\x51\xc8\x98\xe1\xa9\x4e\xb8\x90\xc3\xff\x5c\x8f\x3e\x7e\x14\xdf\xe1\x10\x42\x0d\x63\x1a\x4e\xfe\x39\x9a\x7e\x87\x51\x15\x8a\x8c\x8d\xdb\x42\xff\x4e\xee\x4d\x71\xa4\xfd\x2e\x69\x2e\x25\xda\x38\xb0\xc3\xbc\x84\x92\x20\x44\xd4\x98\x29\x56\x33\xc4\x5b\x8f\x1e\xde\x67\x0f\x70\x59\x46\xcd\x79\xc3\xab\x66\x3f\x6a\x57\x29\x9b\xf5\xe0\x55\x59\x92\x85\x68\xd3\xda\x69\x57\xc6\xf1\xc2\xc1\xcb\xfe\x2c\x96\xb1\x76\x71\xa4\xad\xb6\x46\x30\x3d\xf6\xaa\x03\xa6\xd0\xec\xb2\xf9\x04\x19\xed\xe1\xad\x77\x8a\x4c\x4f\x35\x33\x0b\xfc\x6a\xdd\x18\x4c\x7b\xe2\x56\xb4\xd4\x62\x9e\x7e\xab\x45\x13\x00\xe7\x49\x90\x6a\xfd\x63\xa8\xd4\x51\xde\xaf\x59\xa7\x51\xf4\x34\x16\x69\xd2\x41\xbd\x63\x99\xc7\x61\x0c\x3e\x6f\x12\x7d\x12\x2f\x88\x20\x73\x1a\x16\x54\xf6\x8f\xb5\x43\x08\x22\xa8\xec\x17\x7c\x41\x8a\x20\xe8\x6e\xff\x33\x9c\xc4\x5b\x7f\x4d\xd5\xcf\xc7\xd9\xc7\xde\xc7\xad\x8f\xfd\xe9\x77\x11\x1e\x7f\xdc\xfe\xb8\x6d\x89\xae\xf0\x28\xb4\x2f\xce\x61\x63\x4f\x40\xf9\x71\xbb\xa7\xc9\x5a\x4f\x3b\xa8\xf1\x88\xd6\x76\x4f\x93\x23\x59\x86\x05\x11\x38\x12\xc0\xa1\xa7\xfd\x7c\xc9\xb2\x50\xf6\xb5\xe6\x62\x9d\x7d\x21\x6f\x8b\x70\x0e\xbe\xec\x20\x00\x99\x7d\x38\x64\x5c\xeb\xf3\x69\x75\x57\x92\xf6\xa5\x3e\xb6\x51\x69\x9f\x48\xda\xcf\x33\x50\x9c\x16\x32\x96\x2c\x39\x8d\xb3\x13\xe6\x73\x1b\xda\xbd\xfb\x7d\xb5\x76\xfa\x90\x0f\x82\x9a\x05\x41\x08\xf7\xf1\xc6\x3a\x6e\xbd\x4e\x1d\x1f\x03\x5e\xc0\x07\x26\xbf\x4b\xaa\x64\x66\x10\x6a\x02\x61\x6c\xf1\x05\xe9\xb0\x9f\x6f\x4d\x5e\x1b\x62\x3c\xcd\x3a\xe9\x78\x63\xdd\x99\x18\x77\xab\xb2\xf2\x9d\x13\xfa\xfc\x9f\x0d\x05\xf5\x31\x43\x98\x34\x6d\x04\x33\x5f\x74\x17\x41\x34\xb9\x37\x45\x5f\xf2\xf4\x5c\x15\x2c\x8e\x85\xe4\x70\xc3\xdf\x70\x7d\x48\xf8\x66\xb6\xac\x07\xbe\x2e\x74\x2c\x9e\x09\x9b\x06\x41\x21\x1c\x6c\x86\x9f\xd0\x81\x8b\x8d\xa3\xd8\x4a\x24\x98\xdc\xd2\x94\x42\x07\x41\x86\x42\x63\xf5\x13\x4d\xa6\xd8\x4a\x1b\x26\x7c\x8a\x23\xf7\xa5\x87\x48\x07\xf5\x78\xc4\xc1\xaf\x4b\x8e\xa3\xbc\x0c\xd3\x7e\xeb\x68\x85\x58\x53\x0c\x35\x34\x60\x8c\x5b\xb1\x95\x6a\x5d\x05\x01\x92\xec\x0a\xae\x63\xea\x1f\xc6\xd5\x1c\x45\xd5\xe3\x3b\x76\x25\x89\x9e\xd8\xc8\xce\xb0\x79\x57\x9f\x5c\x1a\xe4\xb3\x96\x99\x99\x63\xed\x88\xe1\x6e\xa3\xb4\x1c\x75\x9b\xd2\x3c\x3d\xe7\xdc\x9a\xa4\x1a\xe3\x66\x76\x08\x00\x47\xe0\x89\x5e\x71\x18\xda\xe6\x72\x2c\x43\x8e\x23\x16\x26\x22\x44\x86\x0e\x74\xe6\x71\xba\x60\x33\x1d\x7e\xb8\x66\xb1\xd9\xb3\xc5\x88\x85\xae\x7d\xe8\x71\xcb\x6d\x13\x8e\x71\xa9\x28\x15\xc9\xad\x66\x56\x59\x02\xfe\xc7\xc7\x39\x97\x35\xa4\x57\x7c\x4e\xad\x5a\xc8\xa2\xf8\x3d\x49\xd0\xfe\xde\xeb\x83\x83\xdd\xa7\xaf\xdf\xbe\xdb\x7f\x86\x40\x36\x9c\x5a\x19\xa9\x82\x06\x66\x99\x35\x86\x1d\x20\x1d\x30\x79\x99\xf3\x33\xcd\xd6\x2a\x38\xd0\xba\xaa\xb4\x2e\x6c\x17\xe8\x86\x72\x24\x32\x5f\x3a\xf9\x1c\x8c\x19\xcd\x6b\x0f\x9d\x8b\x0e\xbb\x4a\x18\x9b\xb1\x19\x1a\xb9\x74\xa8\xe5\x95\x3e\x15\x40\xc8\x9d\xd6\x2f\x98\x40\xdb\xd8\x6d\xbd\x2a\xc9\x8d\x0c\x82\xd5\x52\x99\x0b\xb2\xa4\xa1\xec\xab\x49\xd9\xe3\x4c\xb1\xa0\x69\xbc\x10\xeb\xb5\x10\xe1\x1c\xe3\x20\x90\xfd\x2b\xc1\xe7\x7b\xb0\x00\xd4\x89\x62\xbc\x00\x5a\x12\x36\xd3\xb1\x51\x1c\x1c\x2d\x83\x20\xcc\x27\xfa\xb3\xc6\x71\xf5\x79\x4a\x97\x3a\xba\x91\x60\xd2\x4c\x8c\xfe\x08\xd4\x22\x08\x3c\x4a\x90\x37\x2f\x29\x9c\x9a\x47\x16\x04\xf5\xb3\x81\x39\x0d\x7a\x2b\x7e\xec\xb6\x27\x36\x55\xd8\xde\xa8\x0d\xc2\xea\x94\x96\x31\x71\x17\xd6\x9b\x03\x80\xd7\xeb\x30\x6d\x26\xd2\x6e\x77\x33\x23\xa9\xaf\x4b\x70\x6c\x97\xd6\x92\x1a\x2b\xb7\x92\xa3\xa9\xf1\xf8\x24\x20\x96\x28\x6d\x42\x01\x89\x02\x6b\x13\xbd\xca\x7e\x9e\x3d\xcb\x2f\xb3\x45\x1e\xcf\xde\xf0\xfc\x84\x33\x21\x82\x20\xed\xc7\xb3\xd9\xfe\x05\xcb\xa4\x15\x8b\x80\x14\x02\xbe\x22\xd2\x56\xa6\x55\x4a\xab\x32\xbe\x5f\x36\x41\x17\x90\x52\x3d\x7d\xb1\xae\x3a\x08\xac\x83\x41\x24\x6c\x01\xa6\xe4\xa0\x9e\x51\xbd\x2a\xde\x17\x94\x90\x5b\xac\xc3\x83\x20\x4c\xfb\xb0\x80\x15\x31\x57\x27\x4a\xbb\x5e\xb1\xa7\x55\xab\x03\x56\x41\x3a\x51\x73\x9e\xcd\xc2\x4c\x4b\x00\x96\x82\xae\xea\x7c\x4a\xf4\xe5\xd0\xa5\xc8\x93\x2e\x9e\x0a\x8d\x83\xdd\x26\xc2\x60\xc0\xd9\x5a\x52\x93\x23\xd2\xa2\x89\x46\x22\x65\x9a\x5d\x99\x09\x72\x21\xe8\x2a\x9e\xc5\x4b\xc9\x78\x14\xb6\x5e\x9f\xd7\x19\xa9\xf5\xba\xd2\xa6\x13\x41\xe0\x54\x1b\x8c\xb0\x49\x6b\x37\xdc\xa4\x75\xa5\x85\x46\xa9\x00\x9f\xd1\x33\x41\x15\xe6\xce\xd4\xcc\xf0\x38\x13\x6a\x00\x4c\x25\xd1\xa4\x95\x03\x8a\x15\xa9\x41\xbb\x49\xc2\x96\x12\x61\xa2\x5f\x6b\x3d\x33\x6b\xca\xf1\x8a\x12\xaf\xd7\xd5\xa5\xa2\x53\xc0\x31\x89\xcd\x77\xad\x79\x51\xbd\x3f\x4f\x17\xcc\xcb\xbd\xc8\x8f\xe1\x86\x31\x6a\x42\x34\x5a\x31\x63\xab\x08\x13\xb5\x5e\x91\x4a\x3c\x0e\x4f\xa1\xc9\x5f\x1f\xb7\xb6\x90\x73\x88\x5b\x2b\xbd\x9b\xd5\xe6\x8d\x66\x1b\x54\xb5\xa0\x37\x80\x6c\xde\x7a\x46\xb2\x9c\xfa\x83\x6f\xb6\xf2\x49\x83\xf1\xd9\x54\xd2\x01\x02\x63\xee\x51\xc1\xe7\x7c\x25\xbe\x97\x78\x55\x5d\x64\x4e\x89\xd9\x35\xa2\x01\xa9\x93\xea\x08\x7d\x38\x7c\xfb\x7c\xeb\xdd\xeb\x5f\xf6\x0f\x10\xa9\xd3\xe9\x08\x7d\xd8\xf2\xbf\x9e\xc7\x57\x66\x96\x5f\x82\x74\x26\xda\x1a\x92\xfa\xce\xdf\x7a\x9d\xff\x84\xee\x0c\x06\x41\x20\x1f\xdf\x1b\x0c\xca\x72\x74\x21\xec\x81\x82\xae\x92\xfc\xfc\x3c\xcf\xc0\x56\x89\x2d\x65\xb4\x31\x76\xa4\xa3\x18\x9e\xed\xe5\x22\x4e\x33\xd2\xf9\x6e\xfb\x3b\x54\x96\xfe\x0d\xf4\x04\x69\x12\xaf\x0d\x8b\x10\xd1\xd6\xb3\xd3\x86\x37\x34\x57\xe1\x44\x4e\xe9\xaa\x34\x24\xbf\x82\xb1\xd4\xb2\xa3\x65\x01\xbf\x6a\xf4\x6e\x07\xf1\xa6\xe8\x83\x66\x4a\xb8\x04\x67\x5d\x70\xd8\xb9\x16\xf4\x42\x54\xa4\x02\xf0\x6c\x75\x2b\xa5\x03\xaa\xfe\x62\xee\xbc\x67\x84\x9a\x16\x9c\xb4\x1e\xd7\x00\x1e\x71\x47\xb1\xea\x50\x06\x17\x15\xfa\xac\x46\x0f\x8a\xd0\x9c\xda\xdc\x67\x85\xb1\x8d\x45\xed\x83\x71\x3d\x71\x49\x7d\x3d\x25\x06\xac\xeb\xb4\x39\xae\x4c\xeb\xe9\xf8\xcb\x73\x41\xda\x46\x97\x20\x5d\x4b\x6d\x98\x19\x5e\x59\xa1\xad\xab\x97\x4d\xd5\x64\xa9\x13\xa3\x26\x8d\xeb\xf5\xb5\xb0\xcf\x38\x94\x1b\x9e\x3c\x58\x63\xc0\x98\x1b\x18\xfd\x44\x58\xfb\xc0\xe8\x05\x87\x09\x2b\x71\xab\x3d\xf4\x8b\x42\x3b\x30\x34\x50\x83\x80\xb9\x1d\x5a\x71\x65\xee\xc5\xab\xae\x96\x44\xbc\xf7\xdb\x1a\xa0\x30\xd3\x59\xe1\x00\x5d\xd1\x57\xeb\xe4\xb8\x29\x2d\x67\x14\xee\xa8\xf4\xed\x15\x5d\x95\x24\xa3\x13\x54\xf0\x05\x22\x48\x4f\x15\x0c\x36\xc4\xfe\x26\x48\x35\x01\x4d\x49\x4e\x27\xc8\xd4\x6e\x24\xaf\x56\xba\x89\xa6\x24\xa5\x13\x64\xce\xca\x88\x18\x48\x4d\xd4\xa9\x27\xe9\x36\xbb\x7a\xaa\x53\xaa\xca\xa6\xc9\x0d\x22\xa8\xc1\x22\xa9\x8a\xf5\xfc\x81\xe4\xb4\xe2\x72\x10\x41\x75\xca\x64\x12\x2a\x72\x84\x08\x6a\x32\x13\x90\xd4\xe4\x65\xb4\x04\xb7\x46\xa9\x10\xc4\xc4\xf7\x08\x95\xce\xf3\x96\xcd\x52\xce\x12\xa9\x5e\x4f\xa5\x5c\x82\x64\xd5\x3c\x0b\xfb\xe2\xad\x59\x44\x90\xc8\x93\x33\x26\xdf\xc4\xf2\x14\xd5\xb4\x69\xb2\x06\xc1\xb0\x9b\x33\xd3\xca\x18\x5c\xd1\x0d\xf5\x8c\x1b\xd4\xc7\x67\x70\x33\xa3\x43\x63\xb6\x14\x36\xc9\xa6\x78\x0c\x5a\xd6\x6f\x8a\xbe\xd3\x2d\x0b\xe5\x24\x9b\x12\xf8\x18\x79\xd5\x64\x53\x9d\x55\x3d\xd5\x77\xa6\x5b\xc0\x78\x10\x24\xa8\x9e\x81\x13\x52\x6a\x6f\x4d\xfc\x86\xa6\xf5\x86\xde\x54\xf3\xad\xf0\x46\x5a\xe4\x93\xd9\x83\x72\xee\x8e\xcc\x29\x26\x49\xcd\xfe\x99\xe1\x4d\x83\x65\x47\x0e\x41\x7f\x27\x76\x07\x75\xe0\xe2\x47\x9b\x0a\x26\xc9\xbf\xa1\xc9\x84\x7b\x0c\xe0\xa5\x70\xa2\x3b\x63\x02\x20\xec\x3d\x76\x9a\x49\xc6\xd5\x26\x96\xab\x7d\xcd\x1e\x9d\x33\x76\xd9\x79\x57\x10\x77\x38\xd7\xef\x65\x79\x29\xfc\xdb\x6e\x73\x8b\xe4\xf7\x73\x73\xab\x1f\x87\xb2\x16\xef\x5f\xad\x7e\xdc\x2f\xf8\xc2\x4b\x1d\x4c\x23\x70\x78\xb7\x2a\x49\x28\xe9\xb1\x08\x6b\x4d\x25\x12\x63\x43\xc7\xc7\x96\xa0\x53\x4f\x10\xe5\x9d\x9c\xa2\x5a\xc1\xcd\x42\x2d\x5f\x9b\x00\x6c\x5e\xd8\x0c\x46\xfa\xf0\x3b\x39\x11\x86\x51\x9f\x12\x4e\x9b\xf6\x86\x52\x87\x80\xda\x18\x4e\x3b\x40\x2d\x36\xd5\xe0\x64\xc9\x45\xd5\xed\x3b\xad\x2a\x38\x87\x69\xad\x2a\xad\x4f\xd4\x02\xd3\x90\xe3\x1b\x80\x6a\x59\xf8\x8d\x10\x47\x2e\x40\x27\xe6\x94\xeb\x6d\x88\xd9\xc8\x10\xc4\x3d\x55\x11\x5d\x4b\x52\x9b\xf3\x13\x26\xdf\xf3\xb4\x6d\xa7\x6f\x9d\x37\xf2\x56\x6d\xed\x05\x5f\xdc\x2a\x1c\xdc\xbc\x32\xf9\x0a\x66\x89\x20\xe3\xe4\xaf\xc9\xf3\xf8\xed\x55\xd4\xab\x2e\x24\xf6\x75\xdb\xcc\xfc\x84\x8e\x9b\xe0\x80\x82\x2b\x8d\x01\x91\x24\x05\x5f\x80\xd6\xe7\xff\x86\xf5\xba\xad\x19\x24\xfb\x42\x43\xb2\xb6\x86\x68\x3f\x77\xdc\x37\x93\x39\x14\xf4\xd2\xe3\xde\xf6\xab\x75\x6e\x6e\x64\xa9\x2c\xf7\x45\xcb\x49\x6a\xf3\x42\x17\xed\xc1\x7e\x81\x7a\xa1\x5f\x7e\x8c\x22\xeb\x44\xcd\x5e\xf8\xc2\xf4\xd4\x80\x56\x4a\x6d\xb4\x3b\x80\x76\xbd\x16\x74\xdf\x6b\xd7\x91\xb0\x27\x01\x77\x58\xef\x7a\x67\x01\xa7\x78\x50\x39\xf9\x46\xec\x8a\x25\x85\xcc\x79\xe7\xbc\x10\xb2\x73\xcc\x3a\xb1\xbb\xeb\xee\x23\xdd\x79\x36\xd2\xae\x2d\xf5\x72\xa4\xed\x37\x03\x6a\x51\x50\x69\xc7\x8b\x6b\x77\x77\xb2\x41\x9c\xfb\x9c\xc5\x42\x31\x8f\xa1\x7d\x04\x68\xaf\x35\xd7\xe4\x12\xb5\x27\x83\xa3\xda\x78\x36\x98\xe1\x86\xe8\xda\xcc\x2e\x14\xd6\xdd\xf4\x52\x4a\x72\x24\xfa\x42\xfb\x58\x6b\xde\xa9\x9a\xf5\xb7\x92\x6a\xfb\x06\xf2\x7b\x24\xea\xfc\xa2\xa4\xa0\x8f\xac\x77\xf9\x48\x1a\xfb\xff\x4f\x82\x1e\x79\x03\x7f\x25\xea\x4a\x38\x87\x42\x47\xbc\xde\x2f\xc2\xc3\x16\x52\x4e\x98\xbf\x1d\x69\x35\xea\x90\x13\x3f\x2b\x61\xb0\x12\xdc\x37\xa6\x76\x1a\x55\xc1\xae\xa0\x57\x22\xbc\x16\x78\xb4\x2b\xfa\xa0\x45\x40\x0f\x05\xd9\x15\xe6\x92\xb7\x8d\x64\x5c\x89\xf0\x58\x84\xbb\x75\x4a\x5f\xaa\x32\x1a\x17\xe9\x6b\x51\xbd\x00\x23\x43\x3f\x41\x4a\x2a\x4c\x86\x17\x85\x7a\x8d\x17\x8b\x36\xf0\x96\x4e\x5b\x43\x89\x5d\xd1\x17\x4b\xce\xe2\xd9\x97\x0c\xf2\x1b\xe6\x60\x26\x14\x8a\x19\xe1\x33\x41\x77\x05\x79\xa3\x7e\x47\x67\xae\xe9\xf4\x8d\x80\xaf\x2f\x05\x3d\x13\xe4\xad\xd8\x94\x61\xd4\x0d\x9b\xc8\x9e\xa0\x20\x01\xb0\x92\x00\xf2\x4e\xd0\x16\xe3\x36\x49\x27\x53\xc2\xe8\x60\xc4\x1e\xef\x3c\x78\x38\xea\xf5\x18\x96\xe6\x02\xf1\x2e\xea\x85\x21\x7b\x3c\x7c\x38\x46\x03\x04\x91\x36\x58\x2d\x06\x39\xae\xdf\xd1\x54\x2a\x34\x65\x88\xc9\x41\x93\x2f\xaf\xd4\xad\xe0\x94\x00\x27\x57\xdd\x07\xe7\x60\x44\x4f\x24\x0c\x07\x8e\x80\x73\x1f\x8c\xb2\xc7\xce\xf8\xab\xd7\xcb\xf0\xcd\x2c\x89\xb7\xa1\xbc\x10\x74\x05\x1a\x70\xef\x72\x63\x79\x73\x20\x48\x2c\x44\x7a\x92\x45\xad\x72\x9b\x06\x7f\xc5\xd9\xac\x48\x6a\x6b\xdc\x27\xec\x13\xae\xd8\x23\x3e\x25\xb2\xc4\x44\x6a\x5f\x1f\xc7\x69\xc6\x5a\x41\xfb\x0e\x57\x99\xf1\x0b\x12\x27\xb2\x26\x0e\xa8\xf4\x27\x27\xab\xfc\xf8\x53\xb4\xca\x23\xa9\x3d\xcf\x45\x28\x47\xa5\xe2\x08\x26\x53\x33\x18\xcc\x1f\x0c\x67\xea\x06\xec\x1a\x78\x73\xc8\x8f\x3f\x4d\x72\x85\x14\xcb\x29\x89\x6b\x7c\x23\x30\x92\x83\x51\x52\xc5\x8f\xec\xf5\x12\x6b\x35\x1d\x4f\x92\x29\x11\x34\x9d\x14\xd3\xd1\x86\xf5\x84\x70\xe6\x67\xc2\x18\x5e\x73\xc7\x61\x0a\x0c\xc7\x3c\xad\xbb\xad\x1a\x9f\xea\x86\x17\xa5\x75\x84\x13\x8a\xca\x39\x4b\xb3\xd7\xa3\x2a\x96\xf8\xc8\x8b\xf4\x0d\x01\x4c\x39\x65\xd0\x1b\xa6\x7b\x33\x4a\xe7\xe1\x1e\xf8\x93\x59\x55\x16\x1c\x13\x75\x74\x1b\x8c\xf2\xca\xfc\xb2\xd7\xcb\x2b\x1c\xe1\x93\x7c\x1a\x04\x99\x6e\x86\x7a\x51\xdc\x89\x07\x93\x66\x65\x59\x86\x0c\xb4\xaa\xf5\x45\xf5\x86\x49\x87\xbd\xf2\xad\xee\x35\x7b\xdb\x27\x04\x75\x10\xdc\x59\xa2\x54\xe4\x5b\x8f\x1e\x3d\xf8\x61\x6b\x08\xda\x12\x56\xa3\x34\xf3\x0c\x1b\x26\x83\xad\x1f\xe2\xad\xf9\x74\xb5\x53\x6e\x9f\xa4\xa4\xc8\x98\x48\xe2\x25\xab\x29\x23\xb7\xdc\x92\x67\x78\xc3\x39\x45\x56\x96\x44\xcb\xdf\x36\x9a\x69\xcc\x6c\xed\x70\x36\xac\x24\xa8\x8e\x2a\x23\xc0\xf5\x91\xcf\x39\x67\x54\xbb\x43\xba\x51\x12\x2a\x71\x64\x19\xee\x9a\xad\x66\xe6\xf9\xcc\x27\x37\x8d\x82\xee\x68\x98\xf9\x66\x1e\x85\x1b\x8e\xfb\x30\x1c\x2d\x67\x18\x74\x77\xe7\xe1\xdd\x9d\x7b\xa8\xe7\x62\x45\x5a\x3b\x85\x1d\x4c\x86\x0f\x71\x0f\xdd\xbd\xf7\x14\xa9\x0d\xb7\xc2\x7f\x84\x48\x4a\x07\xa3\xf4\x71\x56\x21\x82\x53\xe1\xc8\x40\x77\x65\x2f\x9f\xb1\x5d\x75\x9e\x1a\xdd\x7f\xa0\x0e\x49\xeb\xf5\xfd\x87\xfa\xef\x0f\xe6\x7d\xb8\x63\x12\xe2\x27\xf4\xfe\xa3\x20\x88\x1f\xd3\x07\xdf\xc3\xdb\xc3\x07\xf0\xf6\xc3\x00\xde\x7e\xf8\x1e\xde\x86\x3b\x3b\xe3\xbc\x67\xa0\x03\xe4\x28\x7e\x3c\xdc\x79\xa4\x12\xdf\x89\x49\x3c\x8d\xe2\xc7\x3b\x83\xfb\xf6\x7d\xf8\xc3\xce\x3a\x7e\xf2\xe4\xe1\xb4\xa7\x5e\x76\x1e\xad\x1f\xde\x0b\x20\xcf\x83\x07\x3b\x3f\x3c\x04\xc0\x0f\xbe\xbf\x77\xff\xbe\xc9\xbe\xb3\x73\x5f\x65\x1f\xee\xb8\xfc\xaa\x70\xf0\xf0\x5e\xa3\x7c\x98\xf6\xe8\x90\xc4\xf4\xe1\x83\x07\xf7\x1e\xf6\xc2\x70\x38\xd8\xb9\x17\xc4\xf8\xf1\xe3\xe1\x60\x0d\xcf\x8d\xde\x63\x62\xe0\xdf\x1f\x00\xfc\x47\x3e\xfc\xe1\x8e\x5f\x41\x6b\x85\x6e\x2d\xe7\xb7\x9a\xb0\x6a\x7b\x84\x4d\x3b\x5f\x1c\x04\xdd\x6e\xd8\x30\x63\xfd\xdb\xf6\xa9\x60\x57\xa8\xf5\x50\x6e\xb3\x66\xd4\x39\xbe\x46\xe2\xaf\xc8\xf8\x79\x7c\x7d\xcc\x5e\xd5\x1c\x83\x98\x0b\xf0\x3d\x01\x71\x11\xab\x1d\xcc\x91\x63\x59\x99\x7d\xd3\x21\x36\x04\xcf\x48\x10\xbc\x1d\xc9\x79\x3e\x82\x7a\x9a\x76\x70\x86\x5f\x87\x50\x91\x35\x3b\xf9\x8d\xe1\xe3\xb6\x39\x0c\x63\x43\x74\x79\x15\x62\xbe\xcb\x5a\x46\xdc\x5a\x4c\x4d\x18\xe1\xd3\x51\x08\x97\x40\xb5\xcd\x77\xbd\xce\x14\x03\x93\x5f\xbe\xb1\x63\x23\xf0\x7a\xdd\x7d\x6b\x14\x68\x9b\x03\x47\x38\xdc\x8d\xa8\x0d\x90\x76\x07\x0e\x1b\x20\xd2\xe9\x17\x1a\xe0\xb6\x42\x13\xe2\x2d\xa7\x4e\xcf\x0b\xba\x14\x04\x5d\xa0\xf0\x41\x10\xe6\xf4\x40\x80\xe1\x1c\x26\xe6\x13\x7c\x19\x87\xbc\xe5\x58\xca\x49\x0e\xe3\x62\x9b\xcc\x48\x8e\xad\xf1\x13\x9b\xe4\xd3\x51\xda\x62\x39\x98\x06\x01\xbf\xc1\xa0\x30\x9f\x52\x19\xa6\x30\x29\x91\x1b\x65\xed\x36\x02\x3e\xaa\x03\x12\x61\xce\x6f\x1a\xec\xae\xbc\x85\x6b\x60\x95\x03\x1f\xb5\xf9\xd8\xbe\xfa\xcd\xb4\xb5\xa9\x3f\x24\x85\x0a\x55\x42\x0a\xf2\xd6\x1c\x97\x25\x79\x2f\x0c\xa9\xad\x31\xd3\x40\x4e\xc9\x2b\x41\x8d\x85\xdd\x1d\x41\x57\x6f\x9f\xef\x0d\xbf\xbf\xf7\x28\x42\xe6\x01\x91\xb7\xcf\xf7\xee\xfd\xf0\xe8\x21\xa4\xa8\x07\x54\x92\x67\x82\xbe\x10\x7d\xcd\x0b\x85\x2b\xeb\xae\xe1\x8e\xe8\x9b\x2c\x04\xf4\xfc\xa5\x64\x5c\x44\x0e\x62\x0b\x37\xfb\x5e\x58\xcb\xf9\x57\x02\xec\xfb\x4a\x57\x5b\x4b\xee\x2a\xf8\x55\x59\x92\x3b\x02\x93\xe7\x5f\xe6\x5f\x9f\x0a\xba\x3a\xe6\x71\x72\xc6\x64\xfb\xed\x49\x0f\x4d\xa6\x08\x38\xaa\xf3\x18\x1c\x2c\x9f\xc7\x88\xa4\xd9\x2c\x4d\x6a\x4e\xa3\x7c\x7b\xb3\x1e\x9a\xa0\x1e\xeb\x21\x55\x8e\xb3\x25\x8b\x65\x2b\xe4\xb2\x24\x9f\x9b\xdc\xf3\x8f\x36\xa1\x6a\xb0\xc2\x0c\xf2\x57\x93\xcf\xfd\x51\x18\xae\x5e\x92\xcf\x0a\x75\xc7\x2c\x02\x47\x7b\xe4\x37\x41\x41\x97\xcd\xa7\x41\xce\x0c\x90\xfc\x24\xe8\x33\xc7\xec\x93\x0f\x70\xe9\x39\xfb\xb5\x60\xfc\xfa\x0d\x67\xf3\xf4\x2a\xea\x0e\x09\x2c\xd3\x67\xb9\x14\xea\xc5\x5c\x9e\x45\x48\xdf\x9e\xd9\xf7\x43\x96\xc9\x34\x63\x0b\xed\xc3\x7e\x91\x9e\xa7\x92\xf1\x08\x05\xc8\xb2\x0e\x60\x77\xa0\x9e\x78\xf4\x42\xf4\xf5\xa3\x49\xf9\x0d\x1c\x6e\xbd\xce\x16\xd7\xaa\xb4\xc6\x84\xe8\x27\x51\xe1\x44\xf4\x4c\xf4\x2b\x04\x99\xfc\x24\xa6\x6e\xc0\xbb\x43\x22\xac\xc0\xe5\x06\x9b\xf6\xce\x6f\xa2\xa2\xb6\xe2\x2c\x5d\x1e\x14\x8b\x85\x2e\x29\x79\x9a\x48\xf5\xfa\x53\x9c\xcd\x16\xe0\x43\x7f\x58\x92\x5f\xaa\xb1\xb5\x64\xd2\x8f\xd3\x41\xe6\x64\x41\x96\xc4\x28\xcc\xcd\xc8\x05\xd5\x54\x73\xf3\xbe\x3e\x19\x5f\xd0\x24\xe4\xe4\x02\x47\x17\xbe\x19\xb9\x6a\xe8\xf8\x82\xce\xc3\x0b\x6c\x31\x48\x5f\x94\x7f\x16\xe1\x85\xa2\x43\x17\x6a\xb5\xd8\x8d\x21\xbc\x68\x8d\x55\x23\x37\x20\xce\xc1\x03\x41\x89\x6d\x08\x62\x82\xb0\x0e\x10\x08\xbe\x7d\x40\xa5\xca\xd2\xf9\x38\x08\xba\xcb\x71\x1c\x72\xf2\xc1\x4e\x06\x27\xa7\x04\x9d\xb1\x6b\x84\x23\x3e\xba\x30\xa1\xad\x9b\x62\xcf\x70\x46\x2f\xf0\x7a\xbd\xe1\x6e\x60\xb6\x5e\xbb\xe0\x25\xb5\xc4\x26\xf3\x07\x19\xd3\x93\x34\x93\xb5\xb4\x17\xa2\xda\x67\x2f\x5c\xc0\xe1\x78\x3c\x59\x84\xcb\x31\x8f\x6e\x68\xa8\x36\x48\x5d\x84\x71\x78\xd1\xf8\x0c\xde\x96\x10\xc6\xd3\x68\xb2\x08\xb9\xcd\x67\x3d\x0a\x61\xac\x15\x22\xaf\xc9\x39\xb8\x9e\x9b\x57\xee\x81\x2e\x6c\xdd\xe7\x2a\xf9\xb3\x08\x13\x8c\xaf\x69\x52\x59\xed\x9e\xd4\x4e\x37\x17\x78\x74\x4d\x8b\xf1\x49\x5f\xe4\x5c\x86\x05\x8e\x4e\x9c\xa1\xb7\xf6\x71\x74\x5d\x31\x86\xc7\x1a\x61\x2e\xe9\xf5\xe4\x78\x4a\x0e\xe9\xc5\xe4\x12\xea\xee\xa6\x2e\x80\xfb\xa1\xce\xb2\x4f\x01\x11\xc6\x6d\x1e\xa1\xc6\x6a\xe3\xb9\xc4\x11\x8f\x78\x2f\x14\x63\xd4\x47\xbd\xcb\x48\xd1\x97\x4b\x45\x5f\xf0\xe8\x2f\x11\x9e\x13\x19\x1e\x92\xfd\x1b\xb0\x16\x3b\x75\xe9\xf3\x92\xfc\x21\xe8\xc6\x56\xdb\xa4\x88\x75\x82\xd4\xd0\xfe\x31\xee\xfd\x24\xc9\x69\xe3\x72\xbc\xeb\x0c\xdd\x3e\x88\x91\xf3\xc3\x42\xa5\x9d\xa6\x20\xa8\x0e\xd5\x55\x5a\x9b\x20\xcd\x7e\x6d\x17\xa8\xed\xeb\x8f\x60\x07\x2a\xf3\x1b\x24\x6a\x26\xb4\x96\x60\x72\xbd\xfe\x20\xec\x73\x2d\xe2\xac\xcb\x11\x04\x86\xb6\x35\x12\xbd\xe3\x86\xff\xa5\xbd\x55\xef\x4e\x59\xc7\x64\xe8\x68\x79\xae\x13\xf8\xb1\x54\x9e\x32\xde\x81\x3a\x48\xa7\x82\x4a\x3a\x39\xef\x54\x7a\x26\x56\xb0\x57\x91\xe7\x46\x73\x35\x45\xd4\x63\xfd\xdc\x90\xb8\x1a\xa1\x24\x2e\x4f\x7b\x1b\xdf\x67\x67\x59\x7e\x99\x75\x74\x26\xdb\xcc\x25\xcf\x2f\xd2\x19\x9b\xa9\xb1\xe3\xae\x9a\x52\x9f\xe8\xea\x84\x98\xab\x73\xf0\x07\x61\x2e\x86\x46\xd6\xd9\x45\x9b\xe2\x92\xce\xb2\x5e\x7f\x16\xa1\x7d\xd1\x01\xd2\xa9\x7b\x25\xcd\xad\x67\x93\xa2\xc8\x7e\x3d\xcb\xb8\x99\x10\x7d\x10\x8d\x14\x6f\xf7\xaa\x3c\x12\xf5\x5d\xe2\xf8\x83\xe8\x7b\xfb\x5b\xd7\xfb\xe4\xb6\x3a\xb6\xb1\xc9\xb5\xb5\xac\x91\x67\xbc\x91\x12\x55\x88\x67\x93\xbc\xad\xd2\x6b\x9c\x4b\x54\x8d\xab\x72\x78\x1f\xec\xa6\xda\xd6\x0e\xfd\x69\x6c\x1f\xa2\x0f\x8d\xdd\x96\x47\xad\x13\x64\x3e\xba\x72\x3c\xf2\x28\xea\xc6\x3e\x7d\x73\xc5\x55\xa6\xf1\x66\x52\x05\xb3\x4a\x23\x7a\xfa\xa3\xdc\xdb\xef\xb3\xc6\xa6\xde\xda\xe2\x5a\x96\x71\xe3\x5d\xd5\x54\x4b\xf0\x76\xfe\xb6\xc6\xbb\xaf\x63\xef\x19\x80\xd8\x17\xa2\x48\xfc\x0d\x2d\xc9\xb9\x1c\xeb\x3f\x5a\x5d\xb8\x85\xb1\x68\xad\x74\x23\xdb\xb8\x2d\x11\x9a\xb1\x91\x0a\x22\xa4\x51\x4b\x7b\x72\xb3\xa0\xc6\x19\x0d\x07\xc4\xbe\xe1\x10\x21\xc5\xe8\x7f\x16\xa1\x4b\x0a\x82\x90\x53\xf7\xa6\x6d\x04\x48\x6c\xb6\xc4\x8d\x13\x55\xa6\xb7\x29\xc5\xa9\x18\xca\x8e\xd0\x28\xd5\x62\x55\x10\x7b\x3e\xd7\x74\x24\xcd\x3a\x4f\xc5\xb8\x96\x16\x31\x45\x3f\x35\xcb\x86\xd2\xac\xc3\xc6\xac\x6f\x5e\xc7\x2e\x3d\x42\x9a\x37\x46\x91\x4b\x1a\x69\x4f\x76\x4f\xc5\x24\x9d\x8e\xf8\x7a\x1d\xd6\x7d\x72\x67\xe0\x9f\x42\x0d\x7b\x10\x70\xbd\x05\xeb\xd7\x4a\x46\x53\xd0\xc1\xa8\xf0\xe5\x74\xc6\x96\x5c\x50\x3e\x29\xa6\xa3\xbc\x9a\x5f\x2d\x6d\x54\xbd\x9b\x88\xe9\x7a\xfd\x97\x08\x63\xf2\x8b\x08\xd5\x1b\x11\x24\x51\x15\x6d\xcc\x01\xf1\xca\x93\xdc\x2e\xbd\xdc\x2d\x21\xad\x3b\x6e\x06\xd8\x34\x95\xe4\x1e\x89\xc9\x1b\x48\x9a\x57\xe4\xd5\xc1\xf3\x96\x4a\xee\x36\x1d\xe3\x00\xd6\x1a\xd5\xe4\x15\x6d\xc0\x64\x41\xc1\x26\x27\x6f\x12\x4b\xf0\xa8\xe1\x42\x5d\xe7\x4d\x62\x14\x04\x4d\xc1\xa2\xcb\x32\x5e\xf4\xa8\xda\x14\x1f\x51\x2d\x24\x1b\x0e\x06\x83\x7b\x77\xef\x3d\x0d\x50\x54\x7d\xd9\xdf\xb9\xfb\xc3\xde\xdd\x1f\xee\x05\xa8\x72\xcd\xf8\x64\x30\x5e\xf4\xe6\x10\x91\x87\xfc\xdc\x66\xf0\x49\x52\xbc\xd2\xae\x49\xbc\xcb\x6a\xa3\x96\xe0\x8e\xe9\xf5\x39\x77\xa0\x83\x20\x8c\x29\xeb\xa1\x31\xea\xfd\xa1\x91\x81\x8f\x5f\x8a\x89\x9c\x86\x31\xe1\x24\xc5\x11\x5c\xab\x82\x63\x57\x9b\x9c\xe2\xc8\x3e\xfe\x21\xc2\x1c\x93\x14\x97\xe4\x57\xb1\x71\x4d\x45\xd8\x66\x54\xfb\x81\xc7\xb1\xf8\x57\xfc\xe3\xda\x7d\xff\xaa\x04\x11\xf2\x1d\x6d\x22\x35\x76\x4f\x10\xc1\x5b\x7d\x30\x3a\xf4\x39\x45\xdb\xf1\x32\xdd\xbe\x18\x6c\x5b\x57\xcf\xdb\x0d\xc7\xd0\x29\x5d\x95\x24\xf6\x8c\x32\x2a\x85\x89\xfe\x71\x3e\xbb\x06\x67\x2a\xfa\xd1\xd3\xb7\xd5\x09\xe3\x86\xda\x92\x67\xfe\xfc\x2a\x15\x22\xcd\x4e\x3a\x36\x8e\x4c\xa7\x03\x17\xd7\x4c\x11\xde\x8e\x2a\x8b\x30\x8e\x42\xd6\xbf\x03\xb1\x4e\xdf\xd8\x6f\x22\x08\x6a\xf7\x15\x1b\xdf\xdb\x7c\xac\x2b\xf6\x04\x34\x6d\x36\x72\x4f\x24\xa8\x92\xfd\x2c\x42\x73\xe7\xcc\x7b\x39\x91\xc0\xaf\x42\x70\xf8\xdf\x85\x76\xa4\x2e\x96\x31\x38\xd1\x1d\x80\xa5\x04\x8b\x56\xc6\x1c\x42\x6b\xf9\x57\x9e\xb5\xe1\xa0\xea\xc2\xe5\x94\x25\x81\x00\x01\x5c\xb8\x02\x6d\x47\x28\x63\xd0\x50\x92\x9a\x93\xee\xf6\xac\x5e\x5d\x00\xbc\xee\xfb\xbc\xad\x8c\x19\x2e\xed\x4f\xda\x8b\xf0\x81\x35\xa9\x0a\xdb\x85\x05\xf5\x98\x18\x30\xa1\xb5\x94\xb1\xec\xa7\x33\xb0\x6f\x5c\xb0\xbd\xfc\x7c\x19\x73\x16\xb2\x3e\x44\x49\xab\x67\xdc\xc8\xd3\x08\xb6\x01\xbe\x97\x63\x68\x81\x88\x56\x8b\x3c\x9e\xed\x35\x47\x4a\xb5\x2b\x1c\x10\x09\x4a\x88\xa9\xc4\x21\x7a\xf9\x7a\xf7\xd9\xd1\xde\xeb\x83\xe7\x2f\x7e\x44\x70\xb3\x54\x0d\x4b\xdb\x10\xcc\x8b\xb0\x28\xfa\xe7\x31\x3f\xab\xba\xdb\x61\xa1\x3b\x38\x38\xf7\xdd\x45\xff\x92\xc7\xcb\xfa\x4d\x30\x5c\xd5\x8c\xb0\x71\x35\x0a\xed\xbf\xa0\xac\x9f\xb1\x2b\xa9\x9d\x8d\x76\x06\xce\x59\x28\xb5\x6d\x04\xb7\x8d\xb3\x54\x80\xee\x02\xd1\xb9\xe9\x3d\xa2\xd8\x52\x26\x93\x53\xe7\x8d\x5e\x7b\x15\xed\xdc\x8b\x78\x88\x0e\xf7\xdf\x1d\xbd\x38\x78\xf1\xee\xc5\xee\xcb\x17\x7f\xee\x3f\x43\xa4\x3b\x30\x9f\xef\x47\xe0\x7b\x94\x65\x33\xe7\x97\x94\xf5\x85\xcc\x97\x21\x04\xe0\x80\x51\xc4\x21\x2e\x49\x0d\xf8\xff\x66\x24\xf4\x59\xed\x3f\x3d\x1e\x7f\x0a\xe0\xb8\x79\x9e\xcb\x1f\xf5\xfa\xc0\x76\x8c\xee\x93\x5f\x45\xb8\xb2\xd4\x2a\xef\xbb\x68\xe8\x70\x90\xd2\x31\xee\x88\x22\x0f\x6a\x75\xb9\xe1\xd9\x19\x0c\x29\xa5\x61\x4a\x59\x5f\xb0\x4c\x62\x63\x2b\x34\x0e\x63\x9a\x82\xa6\x65\x15\xd7\xc6\x0c\xf4\xee\xde\xde\xeb\xf7\x07\xef\x0e\x11\x89\xd7\xeb\xc9\x14\xe3\x28\x0b\x91\x38\xcd\x2f\x8d\xed\x0c\x22\x2b\xe3\xbb\xe2\xb9\x36\x49\x92\x79\x07\x46\xb7\x63\x21\xf5\x11\x18\xe0\xd7\xed\xa5\x8c\x5d\x95\x8d\x17\x52\x92\x95\xea\x24\x04\x21\xd6\x6d\x7d\xf8\x95\x53\x59\x92\xf3\x42\xc6\x66\x55\x78\xe8\xde\x0c\x71\xe8\xbc\x10\x94\xa4\x81\x3f\x1b\x39\x3d\xd2\x61\xb3\xdb\x51\xd8\xc8\x6b\x3b\x49\x59\xe9\x3b\x54\xfb\x13\x14\x1e\x5e\xde\xa0\x88\x55\xd4\x8d\x46\xe1\x4c\xe8\x6d\x08\x56\x95\xb8\x66\xae\x69\x0d\xa1\x75\x80\xb4\x3e\x28\x64\x8c\x38\x5c\xab\xb6\xe6\xa7\x2e\xf6\x60\x25\x4f\xf7\xe4\xf0\x86\x23\x91\xf3\x66\xe8\x34\x44\xd2\x99\x8b\x54\xa4\xde\x92\x3c\x8b\xc0\x6e\x6e\xeb\x22\x89\xf9\x0c\x19\xb7\x92\xfb\xb3\x54\xe6\x5c\x91\x71\xd0\xc1\xd0\x7e\x48\x26\x53\xbb\xf9\xad\xe2\xe5\xf2\x45\x36\xcf\x23\x39\x27\x3c\x2f\x24\x13\xd1\xc4\xd4\x54\xc1\x5e\xc6\xf2\x34\x42\xdb\xf5\xb8\x1b\xf1\x72\x19\xe5\x45\x59\x4e\x49\x16\x5f\xbc\x90\xec\xbc\x2a\xb9\x5b\x6b\xd5\xab\x58\x02\x33\x16\xc9\x79\x5f\xbd\xeb\x7a\xa2\x1b\x6b\x71\x57\xec\xf3\x7e\x3a\x23\x68\x1b\x61\x55\x89\x90\x39\x67\xd1\xef\x02\x74\x99\xfe\xbf\xff\x3f\x00\x00\xff\xff\x54\x06\xa5\xc7\xd6\x76\x01\x00") + +func init() { + err := CTX.Err() + if err != nil { + panic(err) + } + + var f webdav.File + + var rb *bytes.Reader + var r *gzip.Reader + + rb = bytes.NewReader(FileAccountsJs) + r, err = gzip.NewReader(rb) + if err != nil { + panic(err) + } + + err = r.Close() + if err != nil { + panic(err) + } + + f, err = FS.OpenFile(CTX, "accounts.js", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777) + if err != nil { + panic(err) + } + + _, err = io.Copy(f, r) + if err != nil { + panic(err) + } + + err = f.Close() + if err != nil { + panic(err) + } + + Handler = &webdav.Handler{ + FileSystem: FS, + LockSystem: webdav.NewMemLS(), + } + +} + +// Open a file +func (hfs *HTTPFS) Open(path string) (http.File, error) { + path = hfs.Prefix + path + + f, err := FS.OpenFile(CTX, path, os.O_RDONLY, 0644) + if err != nil { + return nil, err + } + + return f, nil +} + +// ReadFile is adapTed from ioutil +func ReadFile(path string) ([]byte, error) { + f, err := FS.OpenFile(CTX, path, os.O_RDONLY, 0644) + if err != nil { + return nil, err + } + + buf := bytes.NewBuffer(make([]byte, 0, bytes.MinRead)) + + // If the buffer overflows, we will get bytes.ErrTooLarge. + // Return that as an error. Any other panic remains. + defer func() { + e := recover() + if e == nil { + return + } + if panicErr, ok := e.(error); ok && panicErr == bytes.ErrTooLarge { + err = panicErr + } else { + panic(e) + } + }() + _, err = buf.ReadFrom(f) + return buf.Bytes(), err +} + +// WriteFile is adapTed from ioutil +func WriteFile(filename string, data []byte, perm os.FileMode) error { + f, err := FS.OpenFile(CTX, filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, perm) + if err != nil { + return err + } + n, err := f.Write(data) + if err == nil && n < len(data) { + err = io.ErrShortWrite + } + if err1 := f.Close(); err == nil { + err = err1 + } + return err +} + +// WalkDirs looks for files in the given dir and returns a list of files in it +// usage for all files in the b0x: WalkDirs("", false) +func WalkDirs(name string, includeDirsInList bool, files ...string) ([]string, error) { + f, err := FS.OpenFile(CTX, name, os.O_RDONLY, 0) + if err != nil { + return nil, err + } + + fileInfos, err := f.Readdir(0) + if err != nil { + return nil, err + } + + err = f.Close() + if err != nil { + return nil, err + } + + for _, info := range fileInfos { + filename := path.Join(name, info.Name()) + + if includeDirsInList || !info.IsDir() { + files = append(files, filename) + } + + if info.IsDir() { + files, err = WalkDirs(filename, includeDirsInList, files...) + if err != nil { + return nil, err + } + } + } + + return files, nil +} diff --git a/pkg/assets/embed.yml b/pkg/assets/embed.yml new file mode 100644 index 0000000000..6dcfc266a9 --- /dev/null +++ b/pkg/assets/embed.yml @@ -0,0 +1,17 @@ +--- +pkg: "assets" +dest: "." +output: "embed.go" +fmt: true +noprefix: true + +compression: + compress: true + +custom: + - files: + - "../../assets/" + base: "../../assets/" + prefix: "" + +... diff --git a/pkg/assets/option.go b/pkg/assets/option.go new file mode 100644 index 0000000000..8dca9c43e9 --- /dev/null +++ b/pkg/assets/option.go @@ -0,0 +1,40 @@ +package assets + +import ( + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-pkg/v2/log" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Logger log.Logger + Config *config.Config +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} diff --git a/pkg/command/root.go b/pkg/command/root.go index 8e8b0791cb..3f250f0e5c 100644 --- a/pkg/command/root.go +++ b/pkg/command/root.go @@ -2,13 +2,10 @@ package command import ( "os" - "os/user" - "path" "strings" "github.com/owncloud/ocis-accounts/pkg/flagset" - "github.com/joho/godotenv" "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" "github.com/owncloud/ocis-accounts/pkg/version" @@ -27,29 +24,8 @@ func Execute() error { app := &cli.App{ Name: "ocis-accounts", Version: version.String, - Usage: "Example service for Reva/oCIS", + Usage: "Provide accounts and groups for oCIS", Compiled: version.Compiled(), - Flags: flagset.RootWithConfig(cfg), - Before: func(c *cli.Context) error { - err := ParseConfig(c, cfg) - logger := NewLogger(cfg) - for _, v := range defaultConfigPaths { - // location is the user's home - if v[0] == '$' || v[0] == '~' { - usr, _ := user.Current() - err := godotenv.Load(path.Join(usr.HomeDir, ".ocis", defaultFilename+".env")) - if err != nil { - logger.Debug().Msgf("ignoring missing env file on dir: %v", v) - } - } else { - err := godotenv.Load(path.Join(v, defaultFilename+".env")) - if err != nil { - logger.Debug().Msgf("ignoring missing env file on dir: %v", v) - } - } - } - return err - }, Authors: []*cli.Author{ { @@ -58,6 +34,12 @@ func Execute() error { }, }, + Flags: flagset.RootWithConfig(cfg), + + Before: func(c *cli.Context) error { + return ParseConfig(c, cfg) + }, + Commands: []*cli.Command{ Server(cfg), }, diff --git a/pkg/command/server.go b/pkg/command/server.go index 57ba1f522d..7343e93ae5 100644 --- a/pkg/command/server.go +++ b/pkg/command/server.go @@ -2,14 +2,17 @@ package command import ( "context" - "syscall" - - "github.com/owncloud/ocis-accounts/pkg/flagset" + "os" + "os/signal" + "strings" "github.com/micro/cli/v2" "github.com/oklog/run" "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/flagset" + "github.com/owncloud/ocis-accounts/pkg/metrics" "github.com/owncloud/ocis-accounts/pkg/server/grpc" + "github.com/owncloud/ocis-accounts/pkg/server/http" svc "github.com/owncloud/ocis-accounts/pkg/service/v0" ) @@ -20,41 +23,83 @@ func Server(cfg *config.Config) *cli.Command { Usage: "Start ocis accounts service", Description: "uses an LDAP server as the storage backend", Flags: flagset.ServerWithConfig(cfg), - Before: func(c *cli.Context) error { - return ParseConfig(c, cfg) + Before: func(ctx *cli.Context) error { + if cfg.HTTP.Root != "/" { + cfg.HTTP.Root = strings.TrimSuffix(cfg.HTTP.Root, "/") + } + + // When running on single binary mode the before hook from the root command won't get called. We manually + // call this before hook from ocis command, so the configuration can be loaded. + return ParseConfig(ctx, cfg) }, Action: func(c *cli.Context) error { logger := NewLogger(cfg) - gr := run.Group{} - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - service := grpc.NewService( - grpc.Logger(logger), - grpc.Context(ctx), - grpc.Config(cfg), - grpc.Name(cfg.Server.Name), - grpc.Namespace(cfg.Server.Namespace), - grpc.Address(cfg.Server.Address), - grpc.Flags(flagset.RootWithConfig(config.New())), + var ( + gr = run.Group{} + ctx, cancel = context.WithCancel(context.Background()) + mtrcs = metrics.New() ) - gr.Add(func() error { - logger.Info().Str("service", service.Name()).Msg("Reporting settings bundle to account service") - go svc.RegisterSettingsBundles(&logger) - return service.Run() - }, func(err error) { - if err != nil { - logger.Error().Err(err).Msg("account service died") - } else { - logger.Info(). - Str("service", service.Name()). - Msg("Shutting down server") - } - cancel() - }) + defer cancel() + + { + server := http.Server( + http.Logger(logger), + http.Name(cfg.Server.Name), + http.Context(ctx), + http.Config(cfg), + http.Metrics(mtrcs), + http.Flags(flagset.RootWithConfig(cfg)), + http.Flags(flagset.ServerWithConfig(cfg)), + ) + + gr.Add(server.Run, func(_ error) { + logger.Info(). + Str("server", "http"). + Msg("Shutting down server") + + cancel() + }) + } + + { + server := grpc.Server( + grpc.Logger(logger), + grpc.Name(cfg.Server.Name), + grpc.Context(ctx), + grpc.Config(cfg), + grpc.Metrics(mtrcs), + ) + + gr.Add(func() error { + logger.Info().Str("service", server.Name()).Msg("Reporting settings bundles to settings service") + go svc.RegisterSettingsBundles(&logger) + return server.Run() + }, func(_ error) { + logger.Info(). + Str("server", "grpc"). + Msg("Shutting down server") + + cancel() + }) + } + + { + stop := make(chan os.Signal, 1) + + gr.Add(func() error { + signal.Notify(stop, os.Interrupt) + + <-stop + + return nil + }, func(err error) { + close(stop) + cancel() + }) + } - run.SignalHandler(ctx, syscall.SIGKILL) return gr.Run() }, } diff --git a/pkg/config/config.go b/pkg/config/config.go index 2cafaddae3..3c9f59bfc2 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -24,14 +24,30 @@ type LDAPSchema struct { Groups string } +// HTTP defines the available http configuration. +type HTTP struct { + Addr string + Namespace string + Root string +} + +// GRPC defines the available grpc configuration. +type GRPC struct { + Addr string + Namespace string +} + // Server configures a server. type Server struct { Name string - Namespace string - Address string AccountsDataPath string } +// Asset defines the available asset configuration. +type Asset struct { + Path string +} + // Log defines the available logging configuration. type Log struct { Level string @@ -42,7 +58,10 @@ type Log struct { // Config merges all Account config parameters. type Config struct { LDAP LDAP + HTTP HTTP + GRPC GRPC Server Server + Asset Asset Log Log } diff --git a/pkg/flagset/flagset.go b/pkg/flagset/flagset.go index 3be48c4731..140a801e3a 100644 --- a/pkg/flagset/flagset.go +++ b/pkg/flagset/flagset.go @@ -35,39 +35,61 @@ func RootWithConfig(cfg *config.Config) []cli.Flag { // ServerWithConfig applies cfg to the root flagset func ServerWithConfig(cfg *config.Config) []cli.Flag { return []cli.Flag{ + &cli.StringFlag{ + Name: "http-namespace", + Value: "com.owncloud.web", + Usage: "Set the base namespace for the http namespace", + EnvVars: []string{"ACCOUNTS_HTTP_NAMESPACE"}, + Destination: &cfg.HTTP.Namespace, + }, + &cli.StringFlag{ + Name: "http-addr", + Value: "0.0.0.0:9181", + Usage: "Address to bind http server", + EnvVars: []string{"ACCOUNTS_HTTP_ADDR"}, + Destination: &cfg.HTTP.Addr, + }, + &cli.StringFlag{ + Name: "http-root", + Value: "/", + Usage: "Root path of http server", + EnvVars: []string{"ACCOUNTS_HTTP_ROOT"}, + Destination: &cfg.HTTP.Root, + }, + &cli.StringFlag{ + Name: "grpc-namespace", + Value: "com.owncloud.api", + Usage: "Set the base namespace for the grpc namespace", + EnvVars: []string{"ACCOUNTS_GRPC_NAMESPACE"}, + Destination: &cfg.GRPC.Namespace, + }, + &cli.StringFlag{ + Name: "grpc-addr", + Value: "0.0.0.0:9180", + Usage: "Address to bind grpc server", + EnvVars: []string{"ACCOUNTS_GRPC_ADDR"}, + Destination: &cfg.GRPC.Addr, + }, &cli.StringFlag{ Name: "name", Value: "accounts", - DefaultText: "accounts", Usage: "service name", EnvVars: []string{"ACCOUNTS_NAME"}, Destination: &cfg.Server.Name, }, - &cli.StringFlag{ - Name: "namespace", - Aliases: []string{"ns"}, - Value: "com.owncloud.api", - DefaultText: "com.owncloud.api", - Usage: "namespace", - EnvVars: []string{"ACCOUNTS_NAMESPACE"}, - Destination: &cfg.Server.Namespace, - }, - &cli.StringFlag{ - Name: "address", - Aliases: []string{"addr"}, - Value: "localhost:9180", - DefaultText: "localhost:9180", - Usage: "service endpoint", - EnvVars: []string{"ACCOUNTS_ADDRESS"}, - Destination: &cfg.Server.Address, - }, &cli.StringFlag{ Name: "accounts-data-path", Value: "/var/tmp/ocis-accounts", - DefaultText: "/var/tmp/ocis-accounts", Usage: "accounts folder", EnvVars: []string{"ACCOUNTS_DATA_PATH"}, Destination: &cfg.Server.AccountsDataPath, }, + &cli.StringFlag{ + Name: "asset-path", + Value: "", + Usage: "Path to custom assets", + EnvVars: []string{"HELLO_ASSET_PATH"}, + Destination: &cfg.Asset.Path, + }, } } diff --git a/pkg/metrics/metrics.go b/pkg/metrics/metrics.go new file mode 100644 index 0000000000..0712724271 --- /dev/null +++ b/pkg/metrics/metrics.go @@ -0,0 +1,22 @@ +package metrics + +var ( + // Namespace defines the namespace for the defines metrics. + Namespace = "ocis" + + // Subsystem defines the subsystem for the defines metrics. + Subsystem = "accounts" +) + +// Metrics defines the available metrics of this service. +type Metrics struct { + // Counter *prometheus.CounterVec +} + +// New initializes the available metrics. +func New() *Metrics { + m := &Metrics{ + } + // TODO: implement metrics + return m +} diff --git a/pkg/proto/v0/accounts.pb.go b/pkg/proto/v0/accounts.pb.go index 217a615f11..5020875e8f 100644 --- a/pkg/proto/v0/accounts.pb.go +++ b/pkg/proto/v0/accounts.pb.go @@ -1,30 +1,39 @@ // Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.21.0-devel +// protoc v3.11.4 // source: accounts.proto package proto import ( - fmt "fmt" proto "github.com/golang/protobuf/proto" - _ "github.com/golang/protobuf/ptypes/empty" + empty "github.com/golang/protobuf/ptypes/empty" timestamp "github.com/golang/protobuf/ptypes/timestamp" _ "google.golang.org/genproto/googleapis/api/annotations" field_mask "google.golang.org/genproto/protobuf/field_mask" - math "math" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" ) -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 type ListAccountsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Optional. The maximum number of accounts to return in the response PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` @@ -53,281 +62,325 @@ type ListAccountsRequest struct { // `email` set to `foo@example.com` // * Query `display_name=\\"Test String\\"` returns accounts with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` } -func (m *ListAccountsRequest) Reset() { *m = ListAccountsRequest{} } -func (m *ListAccountsRequest) String() string { return proto.CompactTextString(m) } -func (*ListAccountsRequest) ProtoMessage() {} +func (x *ListAccountsRequest) Reset() { + *x = ListAccountsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAccountsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAccountsRequest) ProtoMessage() {} + +func (x *ListAccountsRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAccountsRequest.ProtoReflect.Descriptor instead. func (*ListAccountsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{0} + return file_accounts_proto_rawDescGZIP(), []int{0} } -func (m *ListAccountsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListAccountsRequest.Unmarshal(m, b) -} -func (m *ListAccountsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListAccountsRequest.Marshal(b, m, deterministic) -} -func (m *ListAccountsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAccountsRequest.Merge(m, src) -} -func (m *ListAccountsRequest) XXX_Size() int { - return xxx_messageInfo_ListAccountsRequest.Size(m) -} -func (m *ListAccountsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListAccountsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAccountsRequest proto.InternalMessageInfo - -func (m *ListAccountsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize +func (x *ListAccountsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } return 0 } -func (m *ListAccountsRequest) GetPageToken() string { - if m != nil { - return m.PageToken +func (x *ListAccountsRequest) GetPageToken() string { + if x != nil { + return x.PageToken } return "" } -func (m *ListAccountsRequest) GetFieldMask() *field_mask.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListAccountsRequest) GetFieldMask() *field_mask.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListAccountsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *ListAccountsRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } type ListAccountsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The field name should match the noun "accounts" in the method name. There // will be a maximum number of items returned based on the page_size field // in the request Accounts []*Account `protobuf:"bytes,1,rep,name=accounts,proto3" json:"accounts,omitempty"` // Token to retrieve the next page of results, or empty if there are no // more results in the list - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (m *ListAccountsResponse) Reset() { *m = ListAccountsResponse{} } -func (m *ListAccountsResponse) String() string { return proto.CompactTextString(m) } -func (*ListAccountsResponse) ProtoMessage() {} +func (x *ListAccountsResponse) Reset() { + *x = ListAccountsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAccountsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAccountsResponse) ProtoMessage() {} + +func (x *ListAccountsResponse) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAccountsResponse.ProtoReflect.Descriptor instead. func (*ListAccountsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{1} + return file_accounts_proto_rawDescGZIP(), []int{1} } -func (m *ListAccountsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListAccountsResponse.Unmarshal(m, b) -} -func (m *ListAccountsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListAccountsResponse.Marshal(b, m, deterministic) -} -func (m *ListAccountsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListAccountsResponse.Merge(m, src) -} -func (m *ListAccountsResponse) XXX_Size() int { - return xxx_messageInfo_ListAccountsResponse.Size(m) -} -func (m *ListAccountsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListAccountsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListAccountsResponse proto.InternalMessageInfo - -func (m *ListAccountsResponse) GetAccounts() []*Account { - if m != nil { - return m.Accounts +func (x *ListAccountsResponse) GetAccounts() []*Account { + if x != nil { + return x.Accounts } return nil } -func (m *ListAccountsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken +func (x *ListAccountsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } type GetAccountRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *GetAccountRequest) Reset() { *m = GetAccountRequest{} } -func (m *GetAccountRequest) String() string { return proto.CompactTextString(m) } -func (*GetAccountRequest) ProtoMessage() {} +func (x *GetAccountRequest) Reset() { + *x = GetAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetAccountRequest) ProtoMessage() {} + +func (x *GetAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetAccountRequest.ProtoReflect.Descriptor instead. func (*GetAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{2} + return file_accounts_proto_rawDescGZIP(), []int{2} } -func (m *GetAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetAccountRequest.Unmarshal(m, b) -} -func (m *GetAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetAccountRequest.Marshal(b, m, deterministic) -} -func (m *GetAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetAccountRequest.Merge(m, src) -} -func (m *GetAccountRequest) XXX_Size() int { - return xxx_messageInfo_GetAccountRequest.Size(m) -} -func (m *GetAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetAccountRequest proto.InternalMessageInfo - -func (m *GetAccountRequest) GetId() string { - if m != nil { - return m.Id +func (x *GetAccountRequest) GetId() string { + if x != nil { + return x.Id } return "" } type CreateAccountRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account resource to create - Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` } -func (m *CreateAccountRequest) Reset() { *m = CreateAccountRequest{} } -func (m *CreateAccountRequest) String() string { return proto.CompactTextString(m) } -func (*CreateAccountRequest) ProtoMessage() {} +func (x *CreateAccountRequest) Reset() { + *x = CreateAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateAccountRequest) ProtoMessage() {} + +func (x *CreateAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateAccountRequest.ProtoReflect.Descriptor instead. func (*CreateAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{3} + return file_accounts_proto_rawDescGZIP(), []int{3} } -func (m *CreateAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateAccountRequest.Unmarshal(m, b) -} -func (m *CreateAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateAccountRequest.Marshal(b, m, deterministic) -} -func (m *CreateAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateAccountRequest.Merge(m, src) -} -func (m *CreateAccountRequest) XXX_Size() int { - return xxx_messageInfo_CreateAccountRequest.Size(m) -} -func (m *CreateAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateAccountRequest proto.InternalMessageInfo - -func (m *CreateAccountRequest) GetAccount() *Account { - if m != nil { - return m.Account +func (x *CreateAccountRequest) GetAccount() *Account { + if x != nil { + return x.Account } return nil } type UpdateAccountRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account resource which replaces the resource on the server Account *Account `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"` // The update mask applies to the resource. For the `FieldMask` definition, // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask - UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (m *UpdateAccountRequest) Reset() { *m = UpdateAccountRequest{} } -func (m *UpdateAccountRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateAccountRequest) ProtoMessage() {} +func (x *UpdateAccountRequest) Reset() { + *x = UpdateAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateAccountRequest) ProtoMessage() {} + +func (x *UpdateAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateAccountRequest.ProtoReflect.Descriptor instead. func (*UpdateAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{4} + return file_accounts_proto_rawDescGZIP(), []int{4} } -func (m *UpdateAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateAccountRequest.Unmarshal(m, b) -} -func (m *UpdateAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateAccountRequest.Marshal(b, m, deterministic) -} -func (m *UpdateAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateAccountRequest.Merge(m, src) -} -func (m *UpdateAccountRequest) XXX_Size() int { - return xxx_messageInfo_UpdateAccountRequest.Size(m) -} -func (m *UpdateAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateAccountRequest proto.InternalMessageInfo - -func (m *UpdateAccountRequest) GetAccount() *Account { - if m != nil { - return m.Account +func (x *UpdateAccountRequest) GetAccount() *Account { + if x != nil { + return x.Account } return nil } -func (m *UpdateAccountRequest) GetUpdateMask() *field_mask.FieldMask { - if m != nil { - return m.UpdateMask +func (x *UpdateAccountRequest) GetUpdateMask() *field_mask.FieldMask { + if x != nil { + return x.UpdateMask } return nil } type DeleteAccountRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DeleteAccountRequest) Reset() { *m = DeleteAccountRequest{} } -func (m *DeleteAccountRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteAccountRequest) ProtoMessage() {} +func (x *DeleteAccountRequest) Reset() { + *x = DeleteAccountRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteAccountRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteAccountRequest) ProtoMessage() {} + +func (x *DeleteAccountRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteAccountRequest.ProtoReflect.Descriptor instead. func (*DeleteAccountRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{5} + return file_accounts_proto_rawDescGZIP(), []int{5} } -func (m *DeleteAccountRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteAccountRequest.Unmarshal(m, b) -} -func (m *DeleteAccountRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteAccountRequest.Marshal(b, m, deterministic) -} -func (m *DeleteAccountRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteAccountRequest.Merge(m, src) -} -func (m *DeleteAccountRequest) XXX_Size() int { - return xxx_messageInfo_DeleteAccountRequest.Size(m) -} -func (m *DeleteAccountRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteAccountRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteAccountRequest proto.InternalMessageInfo - -func (m *DeleteAccountRequest) GetId() string { - if m != nil { - return m.Id +func (x *DeleteAccountRequest) GetId() string { + if x != nil { + return x.Id } return "" } @@ -335,6 +388,10 @@ func (m *DeleteAccountRequest) GetId() string { // Account follows the properties of the ms graph api user resuorce. // See https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties type Account struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // *true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter. @@ -432,228 +489,232 @@ type Account struct { // If this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint. // Read-only. Use revokeSignInSessions to reset. SignInSessionsValidFromDateTime *timestamp.Timestamp `protobuf:"bytes,61,opt,name=sign_in_sessions_valid_from_date_time,json=signInSessionsValidFromDateTime,proto3" json:"sign_in_sessions_valid_from_date_time,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Account) Reset() { *m = Account{} } -func (m *Account) String() string { return proto.CompactTextString(m) } -func (*Account) ProtoMessage() {} +func (x *Account) Reset() { + *x = Account{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Account) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Account) ProtoMessage() {} + +func (x *Account) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Account.ProtoReflect.Descriptor instead. func (*Account) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{6} + return file_accounts_proto_rawDescGZIP(), []int{6} } -func (m *Account) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Account.Unmarshal(m, b) -} -func (m *Account) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Account.Marshal(b, m, deterministic) -} -func (m *Account) XXX_Merge(src proto.Message) { - xxx_messageInfo_Account.Merge(m, src) -} -func (m *Account) XXX_Size() int { - return xxx_messageInfo_Account.Size(m) -} -func (m *Account) XXX_DiscardUnknown() { - xxx_messageInfo_Account.DiscardUnknown(m) -} - -var xxx_messageInfo_Account proto.InternalMessageInfo - -func (m *Account) GetId() string { - if m != nil { - return m.Id +func (x *Account) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Account) GetAccountEnabled() bool { - if m != nil { - return m.AccountEnabled +func (x *Account) GetAccountEnabled() bool { + if x != nil { + return x.AccountEnabled } return false } -func (m *Account) GetIsResourceAccount() bool { - if m != nil { - return m.IsResourceAccount +func (x *Account) GetIsResourceAccount() bool { + if x != nil { + return x.IsResourceAccount } return false } -func (m *Account) GetCreationType() string { - if m != nil { - return m.CreationType +func (x *Account) GetCreationType() string { + if x != nil { + return x.CreationType } return "" } -func (m *Account) GetIdentities() []*Identities { - if m != nil { - return m.Identities +func (x *Account) GetIdentities() []*Identities { + if x != nil { + return x.Identities } return nil } -func (m *Account) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Account) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Account) GetPreferredName() string { - if m != nil { - return m.PreferredName +func (x *Account) GetPreferredName() string { + if x != nil { + return x.PreferredName } return "" } -func (m *Account) GetUidNumber() int64 { - if m != nil { - return m.UidNumber +func (x *Account) GetUidNumber() int64 { + if x != nil { + return x.UidNumber } return 0 } -func (m *Account) GetGidNumber() int64 { - if m != nil { - return m.GidNumber +func (x *Account) GetGidNumber() int64 { + if x != nil { + return x.GidNumber } return 0 } -func (m *Account) GetMail() string { - if m != nil { - return m.Mail +func (x *Account) GetMail() string { + if x != nil { + return x.Mail } return "" } -func (m *Account) GetDescription() string { - if m != nil { - return m.Description +func (x *Account) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Account) GetPasswordProfile() *PasswordProfile { - if m != nil { - return m.PasswordProfile +func (x *Account) GetPasswordProfile() *PasswordProfile { + if x != nil { + return x.PasswordProfile } return nil } -func (m *Account) GetMemberOf() []*Group { - if m != nil { - return m.MemberOf +func (x *Account) GetMemberOf() []*Group { + if x != nil { + return x.MemberOf } return nil } -func (m *Account) GetCreatedDateTime() *timestamp.Timestamp { - if m != nil { - return m.CreatedDateTime +func (x *Account) GetCreatedDateTime() *timestamp.Timestamp { + if x != nil { + return x.CreatedDateTime } return nil } -func (m *Account) GetDeletedDateTime() *timestamp.Timestamp { - if m != nil { - return m.DeletedDateTime +func (x *Account) GetDeletedDateTime() *timestamp.Timestamp { + if x != nil { + return x.DeletedDateTime } return nil } -func (m *Account) GetOnPremisesSyncEnabled() bool { - if m != nil { - return m.OnPremisesSyncEnabled +func (x *Account) GetOnPremisesSyncEnabled() bool { + if x != nil { + return x.OnPremisesSyncEnabled } return false } -func (m *Account) GetOnPremisesImmutableId() string { - if m != nil { - return m.OnPremisesImmutableId +func (x *Account) GetOnPremisesImmutableId() string { + if x != nil { + return x.OnPremisesImmutableId } return "" } -func (m *Account) GetOnPremisesSecurityIdentifier() string { - if m != nil { - return m.OnPremisesSecurityIdentifier +func (x *Account) GetOnPremisesSecurityIdentifier() string { + if x != nil { + return x.OnPremisesSecurityIdentifier } return "" } -func (m *Account) GetOnPremisesDistinguishedName() string { - if m != nil { - return m.OnPremisesDistinguishedName +func (x *Account) GetOnPremisesDistinguishedName() string { + if x != nil { + return x.OnPremisesDistinguishedName } return "" } -func (m *Account) GetOnPremisesSamAccountName() string { - if m != nil { - return m.OnPremisesSamAccountName +func (x *Account) GetOnPremisesSamAccountName() string { + if x != nil { + return x.OnPremisesSamAccountName } return "" } -func (m *Account) GetOnPremisesDomainName() string { - if m != nil { - return m.OnPremisesDomainName +func (x *Account) GetOnPremisesDomainName() string { + if x != nil { + return x.OnPremisesDomainName } return "" } -func (m *Account) GetOnPremisesUserPrincipalName() string { - if m != nil { - return m.OnPremisesUserPrincipalName +func (x *Account) GetOnPremisesUserPrincipalName() string { + if x != nil { + return x.OnPremisesUserPrincipalName } return "" } -func (m *Account) GetOnPremisesLastSyncDateTime() *timestamp.Timestamp { - if m != nil { - return m.OnPremisesLastSyncDateTime +func (x *Account) GetOnPremisesLastSyncDateTime() *timestamp.Timestamp { + if x != nil { + return x.OnPremisesLastSyncDateTime } return nil } -func (m *Account) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { - if m != nil { - return m.OnPremisesProvisioningErrors +func (x *Account) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { + if x != nil { + return x.OnPremisesProvisioningErrors } return nil } -func (m *Account) GetExternalUserState() string { - if m != nil { - return m.ExternalUserState +func (x *Account) GetExternalUserState() string { + if x != nil { + return x.ExternalUserState } return "" } -func (m *Account) GetExternalUserStateChangeDateTime() *timestamp.Timestamp { - if m != nil { - return m.ExternalUserStateChangeDateTime +func (x *Account) GetExternalUserStateChangeDateTime() *timestamp.Timestamp { + if x != nil { + return x.ExternalUserStateChangeDateTime } return nil } -func (m *Account) GetRefreshTokensValidFromDateTime() *timestamp.Timestamp { - if m != nil { - return m.RefreshTokensValidFromDateTime +func (x *Account) GetRefreshTokensValidFromDateTime() *timestamp.Timestamp { + if x != nil { + return x.RefreshTokensValidFromDateTime } return nil } -func (m *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { - if m != nil { - return m.SignInSessionsValidFromDateTime +func (x *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { + if x != nil { + return x.SignInSessionsValidFromDateTime } return nil } @@ -663,6 +724,10 @@ func (m *Account) GetSignInSessionsValidFromDateTime() *timestamp.Timestamp { // This enables the user to sign in to the user account with any of those associated identities. // They are also used to keep a history of old usernames. type Identities struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`. // Here, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer. // Additional validation is enforced on *issuer_assigned_id* when the sign-in type is set to `emailAddress` or `userName`. @@ -680,59 +745,67 @@ type Identities struct { // * `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address // * `userName`, issuer_assigned_id must be a valid local part of an email address // Supports $filter. 512 character limit. - IssuerAssignedId string `protobuf:"bytes,3,opt,name=issuer_assigned_id,json=issuerAssignedId,proto3" json:"issuer_assigned_id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + IssuerAssignedId string `protobuf:"bytes,3,opt,name=issuer_assigned_id,json=issuerAssignedId,proto3" json:"issuer_assigned_id,omitempty"` } -func (m *Identities) Reset() { *m = Identities{} } -func (m *Identities) String() string { return proto.CompactTextString(m) } -func (*Identities) ProtoMessage() {} +func (x *Identities) Reset() { + *x = Identities{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Identities) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Identities) ProtoMessage() {} + +func (x *Identities) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Identities.ProtoReflect.Descriptor instead. func (*Identities) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{7} + return file_accounts_proto_rawDescGZIP(), []int{7} } -func (m *Identities) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Identities.Unmarshal(m, b) -} -func (m *Identities) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Identities.Marshal(b, m, deterministic) -} -func (m *Identities) XXX_Merge(src proto.Message) { - xxx_messageInfo_Identities.Merge(m, src) -} -func (m *Identities) XXX_Size() int { - return xxx_messageInfo_Identities.Size(m) -} -func (m *Identities) XXX_DiscardUnknown() { - xxx_messageInfo_Identities.DiscardUnknown(m) -} - -var xxx_messageInfo_Identities proto.InternalMessageInfo - -func (m *Identities) GetSignInType() string { - if m != nil { - return m.SignInType +func (x *Identities) GetSignInType() string { + if x != nil { + return x.SignInType } return "" } -func (m *Identities) GetIssuer() string { - if m != nil { - return m.Issuer +func (x *Identities) GetIssuer() string { + if x != nil { + return x.Issuer } return "" } -func (m *Identities) GetIssuerAssignedId() string { - if m != nil { - return m.IssuerAssignedId +func (x *Identities) GetIssuerAssignedId() string { + if x != nil { + return x.IssuerAssignedId } return "" } type PasswordProfile struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The password for the user. This property is required when a user is created. // It can be updated, but the user will be required to change the password on the next login. // The password must satisfy minimum requirements as specified by the user’s passwordPolicies property. By default, a strong password is required. @@ -746,73 +819,81 @@ type PasswordProfile struct { // *true* if the user must change her password on the next login; otherwise false. ForceChangePasswordNextSignIn bool `protobuf:"varint,4,opt,name=force_change_password_next_sign_in,json=forceChangePasswordNextSignIn,proto3" json:"force_change_password_next_sign_in,omitempty"` // If *true*, at next sign-in, the user must perform a multi-factor authentication (MFA) before being forced to change their password. The behavior is identical to forceChangePasswordNextSignIn except that the user is required to first perform a multi-factor authentication before password change. After a password change, this property will be automatically reset to false. If not set, default is false. - ForceChangePasswordNextSignInWithMfa bool `protobuf:"varint,5,opt,name=force_change_password_next_sign_in_with_mfa,json=forceChangePasswordNextSignInWithMfa,proto3" json:"force_change_password_next_sign_in_with_mfa,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + ForceChangePasswordNextSignInWithMfa bool `protobuf:"varint,5,opt,name=force_change_password_next_sign_in_with_mfa,json=forceChangePasswordNextSignInWithMfa,proto3" json:"force_change_password_next_sign_in_with_mfa,omitempty"` } -func (m *PasswordProfile) Reset() { *m = PasswordProfile{} } -func (m *PasswordProfile) String() string { return proto.CompactTextString(m) } -func (*PasswordProfile) ProtoMessage() {} +func (x *PasswordProfile) Reset() { + *x = PasswordProfile{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PasswordProfile) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PasswordProfile) ProtoMessage() {} + +func (x *PasswordProfile) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PasswordProfile.ProtoReflect.Descriptor instead. func (*PasswordProfile) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{8} + return file_accounts_proto_rawDescGZIP(), []int{8} } -func (m *PasswordProfile) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_PasswordProfile.Unmarshal(m, b) -} -func (m *PasswordProfile) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_PasswordProfile.Marshal(b, m, deterministic) -} -func (m *PasswordProfile) XXX_Merge(src proto.Message) { - xxx_messageInfo_PasswordProfile.Merge(m, src) -} -func (m *PasswordProfile) XXX_Size() int { - return xxx_messageInfo_PasswordProfile.Size(m) -} -func (m *PasswordProfile) XXX_DiscardUnknown() { - xxx_messageInfo_PasswordProfile.DiscardUnknown(m) -} - -var xxx_messageInfo_PasswordProfile proto.InternalMessageInfo - -func (m *PasswordProfile) GetPassword() string { - if m != nil { - return m.Password +func (x *PasswordProfile) GetPassword() string { + if x != nil { + return x.Password } return "" } -func (m *PasswordProfile) GetLastPasswordChangeDateTime() *timestamp.Timestamp { - if m != nil { - return m.LastPasswordChangeDateTime +func (x *PasswordProfile) GetLastPasswordChangeDateTime() *timestamp.Timestamp { + if x != nil { + return x.LastPasswordChangeDateTime } return nil } -func (m *PasswordProfile) GetPasswordPolicies() []string { - if m != nil { - return m.PasswordPolicies +func (x *PasswordProfile) GetPasswordPolicies() []string { + if x != nil { + return x.PasswordPolicies } return nil } -func (m *PasswordProfile) GetForceChangePasswordNextSignIn() bool { - if m != nil { - return m.ForceChangePasswordNextSignIn +func (x *PasswordProfile) GetForceChangePasswordNextSignIn() bool { + if x != nil { + return x.ForceChangePasswordNextSignIn } return false } -func (m *PasswordProfile) GetForceChangePasswordNextSignInWithMfa() bool { - if m != nil { - return m.ForceChangePasswordNextSignInWithMfa +func (x *PasswordProfile) GetForceChangePasswordNextSignInWithMfa() bool { + if x != nil { + return x.ForceChangePasswordNextSignInWithMfa } return false } type ListGroupsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Optional. The maximum number of groups to return in the response PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` @@ -839,367 +920,439 @@ type ListGroupsRequest struct { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` } -func (m *ListGroupsRequest) Reset() { *m = ListGroupsRequest{} } -func (m *ListGroupsRequest) String() string { return proto.CompactTextString(m) } -func (*ListGroupsRequest) ProtoMessage() {} +func (x *ListGroupsRequest) Reset() { + *x = ListGroupsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListGroupsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListGroupsRequest) ProtoMessage() {} + +func (x *ListGroupsRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListGroupsRequest.ProtoReflect.Descriptor instead. func (*ListGroupsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{9} + return file_accounts_proto_rawDescGZIP(), []int{9} } -func (m *ListGroupsRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListGroupsRequest.Unmarshal(m, b) -} -func (m *ListGroupsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListGroupsRequest.Marshal(b, m, deterministic) -} -func (m *ListGroupsRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListGroupsRequest.Merge(m, src) -} -func (m *ListGroupsRequest) XXX_Size() int { - return xxx_messageInfo_ListGroupsRequest.Size(m) -} -func (m *ListGroupsRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListGroupsRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListGroupsRequest proto.InternalMessageInfo - -func (m *ListGroupsRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize +func (x *ListGroupsRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } return 0 } -func (m *ListGroupsRequest) GetPageToken() string { - if m != nil { - return m.PageToken +func (x *ListGroupsRequest) GetPageToken() string { + if x != nil { + return x.PageToken } return "" } -func (m *ListGroupsRequest) GetFieldMask() *field_mask.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListGroupsRequest) GetFieldMask() *field_mask.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListGroupsRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *ListGroupsRequest) GetQuery() string { + if x != nil { + return x.Query } return "" } type ListGroupsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The field name should match the noun "group" in the method name. There // will be a maximum number of items returned based on the page_size field // in the request Groups []*Group `protobuf:"bytes,1,rep,name=groups,proto3" json:"groups,omitempty"` // Token to retrieve the next page of results, or empty if there are no // more results in the list - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (m *ListGroupsResponse) Reset() { *m = ListGroupsResponse{} } -func (m *ListGroupsResponse) String() string { return proto.CompactTextString(m) } -func (*ListGroupsResponse) ProtoMessage() {} +func (x *ListGroupsResponse) Reset() { + *x = ListGroupsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListGroupsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListGroupsResponse) ProtoMessage() {} + +func (x *ListGroupsResponse) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListGroupsResponse.ProtoReflect.Descriptor instead. func (*ListGroupsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{10} + return file_accounts_proto_rawDescGZIP(), []int{10} } -func (m *ListGroupsResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListGroupsResponse.Unmarshal(m, b) -} -func (m *ListGroupsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListGroupsResponse.Marshal(b, m, deterministic) -} -func (m *ListGroupsResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListGroupsResponse.Merge(m, src) -} -func (m *ListGroupsResponse) XXX_Size() int { - return xxx_messageInfo_ListGroupsResponse.Size(m) -} -func (m *ListGroupsResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListGroupsResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListGroupsResponse proto.InternalMessageInfo - -func (m *ListGroupsResponse) GetGroups() []*Group { - if m != nil { - return m.Groups +func (x *ListGroupsResponse) GetGroups() []*Group { + if x != nil { + return x.Groups } return nil } -func (m *ListGroupsResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken +func (x *ListGroupsResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } type GetGroupRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *GetGroupRequest) Reset() { *m = GetGroupRequest{} } -func (m *GetGroupRequest) String() string { return proto.CompactTextString(m) } -func (*GetGroupRequest) ProtoMessage() {} +func (x *GetGroupRequest) Reset() { + *x = GetGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetGroupRequest) ProtoMessage() {} + +func (x *GetGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetGroupRequest.ProtoReflect.Descriptor instead. func (*GetGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{11} + return file_accounts_proto_rawDescGZIP(), []int{11} } -func (m *GetGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_GetGroupRequest.Unmarshal(m, b) -} -func (m *GetGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_GetGroupRequest.Marshal(b, m, deterministic) -} -func (m *GetGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_GetGroupRequest.Merge(m, src) -} -func (m *GetGroupRequest) XXX_Size() int { - return xxx_messageInfo_GetGroupRequest.Size(m) -} -func (m *GetGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_GetGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_GetGroupRequest proto.InternalMessageInfo - -func (m *GetGroupRequest) GetId() string { - if m != nil { - return m.Id +func (x *GetGroupRequest) GetId() string { + if x != nil { + return x.Id } return "" } type CreateGroupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account resource to create - Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` } -func (m *CreateGroupRequest) Reset() { *m = CreateGroupRequest{} } -func (m *CreateGroupRequest) String() string { return proto.CompactTextString(m) } -func (*CreateGroupRequest) ProtoMessage() {} +func (x *CreateGroupRequest) Reset() { + *x = CreateGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateGroupRequest) ProtoMessage() {} + +func (x *CreateGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateGroupRequest.ProtoReflect.Descriptor instead. func (*CreateGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{12} + return file_accounts_proto_rawDescGZIP(), []int{12} } -func (m *CreateGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_CreateGroupRequest.Unmarshal(m, b) -} -func (m *CreateGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_CreateGroupRequest.Marshal(b, m, deterministic) -} -func (m *CreateGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_CreateGroupRequest.Merge(m, src) -} -func (m *CreateGroupRequest) XXX_Size() int { - return xxx_messageInfo_CreateGroupRequest.Size(m) -} -func (m *CreateGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_CreateGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_CreateGroupRequest proto.InternalMessageInfo - -func (m *CreateGroupRequest) GetGroup() *Group { - if m != nil { - return m.Group +func (x *CreateGroupRequest) GetGroup() *Group { + if x != nil { + return x.Group } return nil } type UpdateGroupRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The group resource which replaces the resource on the server Group *Group `protobuf:"bytes,1,opt,name=group,proto3" json:"group,omitempty"` // The update mask applies to the resource. For the `FieldMask` definition, // see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask - UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + UpdateMask *field_mask.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } -func (m *UpdateGroupRequest) Reset() { *m = UpdateGroupRequest{} } -func (m *UpdateGroupRequest) String() string { return proto.CompactTextString(m) } -func (*UpdateGroupRequest) ProtoMessage() {} +func (x *UpdateGroupRequest) Reset() { + *x = UpdateGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateGroupRequest) ProtoMessage() {} + +func (x *UpdateGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateGroupRequest.ProtoReflect.Descriptor instead. func (*UpdateGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{13} + return file_accounts_proto_rawDescGZIP(), []int{13} } -func (m *UpdateGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_UpdateGroupRequest.Unmarshal(m, b) -} -func (m *UpdateGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_UpdateGroupRequest.Marshal(b, m, deterministic) -} -func (m *UpdateGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateGroupRequest.Merge(m, src) -} -func (m *UpdateGroupRequest) XXX_Size() int { - return xxx_messageInfo_UpdateGroupRequest.Size(m) -} -func (m *UpdateGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateGroupRequest proto.InternalMessageInfo - -func (m *UpdateGroupRequest) GetGroup() *Group { - if m != nil { - return m.Group +func (x *UpdateGroupRequest) GetGroup() *Group { + if x != nil { + return x.Group } return nil } -func (m *UpdateGroupRequest) GetUpdateMask() *field_mask.FieldMask { - if m != nil { - return m.UpdateMask +func (x *UpdateGroupRequest) GetUpdateMask() *field_mask.FieldMask { + if x != nil { + return x.UpdateMask } return nil } type DeleteGroupRequest struct { - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *DeleteGroupRequest) Reset() { *m = DeleteGroupRequest{} } -func (m *DeleteGroupRequest) String() string { return proto.CompactTextString(m) } -func (*DeleteGroupRequest) ProtoMessage() {} +func (x *DeleteGroupRequest) Reset() { + *x = DeleteGroupRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteGroupRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteGroupRequest) ProtoMessage() {} + +func (x *DeleteGroupRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteGroupRequest.ProtoReflect.Descriptor instead. func (*DeleteGroupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{14} + return file_accounts_proto_rawDescGZIP(), []int{14} } -func (m *DeleteGroupRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_DeleteGroupRequest.Unmarshal(m, b) -} -func (m *DeleteGroupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_DeleteGroupRequest.Marshal(b, m, deterministic) -} -func (m *DeleteGroupRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_DeleteGroupRequest.Merge(m, src) -} -func (m *DeleteGroupRequest) XXX_Size() int { - return xxx_messageInfo_DeleteGroupRequest.Size(m) -} -func (m *DeleteGroupRequest) XXX_DiscardUnknown() { - xxx_messageInfo_DeleteGroupRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_DeleteGroupRequest proto.InternalMessageInfo - -func (m *DeleteGroupRequest) GetId() string { - if m != nil { - return m.Id +func (x *DeleteGroupRequest) GetId() string { + if x != nil { + return x.Id } return "" } type AddMemberRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The account id to add - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (m *AddMemberRequest) Reset() { *m = AddMemberRequest{} } -func (m *AddMemberRequest) String() string { return proto.CompactTextString(m) } -func (*AddMemberRequest) ProtoMessage() {} +func (x *AddMemberRequest) Reset() { + *x = AddMemberRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddMemberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddMemberRequest) ProtoMessage() {} + +func (x *AddMemberRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AddMemberRequest.ProtoReflect.Descriptor instead. func (*AddMemberRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{15} + return file_accounts_proto_rawDescGZIP(), []int{15} } -func (m *AddMemberRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_AddMemberRequest.Unmarshal(m, b) -} -func (m *AddMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_AddMemberRequest.Marshal(b, m, deterministic) -} -func (m *AddMemberRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_AddMemberRequest.Merge(m, src) -} -func (m *AddMemberRequest) XXX_Size() int { - return xxx_messageInfo_AddMemberRequest.Size(m) -} -func (m *AddMemberRequest) XXX_DiscardUnknown() { - xxx_messageInfo_AddMemberRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_AddMemberRequest proto.InternalMessageInfo - -func (m *AddMemberRequest) GetId() string { - if m != nil { - return m.Id +func (x *AddMemberRequest) GetId() string { + if x != nil { + return x.Id } return "" } type RemoveMemberRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The group id + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The account id to remove - // TODO id in the body indt in the url? not necessary ... use empty? - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + AccountId string `protobuf:"bytes,2,opt,name=account_id,json=accountId,proto3" json:"account_id,omitempty"` } -func (m *RemoveMemberRequest) Reset() { *m = RemoveMemberRequest{} } -func (m *RemoveMemberRequest) String() string { return proto.CompactTextString(m) } -func (*RemoveMemberRequest) ProtoMessage() {} +func (x *RemoveMemberRequest) Reset() { + *x = RemoveMemberRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveMemberRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveMemberRequest) ProtoMessage() {} + +func (x *RemoveMemberRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RemoveMemberRequest.ProtoReflect.Descriptor instead. func (*RemoveMemberRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{16} + return file_accounts_proto_rawDescGZIP(), []int{16} } -func (m *RemoveMemberRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_RemoveMemberRequest.Unmarshal(m, b) -} -func (m *RemoveMemberRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_RemoveMemberRequest.Marshal(b, m, deterministic) -} -func (m *RemoveMemberRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_RemoveMemberRequest.Merge(m, src) -} -func (m *RemoveMemberRequest) XXX_Size() int { - return xxx_messageInfo_RemoveMemberRequest.Size(m) -} -func (m *RemoveMemberRequest) XXX_DiscardUnknown() { - xxx_messageInfo_RemoveMemberRequest.DiscardUnknown(m) +func (x *RemoveMemberRequest) GetId() string { + if x != nil { + return x.Id + } + return "" } -var xxx_messageInfo_RemoveMemberRequest proto.InternalMessageInfo - -func (m *RemoveMemberRequest) GetId() string { - if m != nil { - return m.Id +func (x *RemoveMemberRequest) GetAccountId() string { + if x != nil { + return x.AccountId } return "" } type ListMembersRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + PageSize int32 `protobuf:"varint,1,opt,name=page_size,json=pageSize,proto3" json:"page_size,omitempty"` // Optional. A pagination token returned from a previous call to `Get` // that indicates from where search should continue @@ -1225,125 +1378,150 @@ type ListMembersRequest struct { // starts with "Th" // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + // The group id + Id string `protobuf:"bytes,5,opt,name=id,proto3" json:"id,omitempty"` } -func (m *ListMembersRequest) Reset() { *m = ListMembersRequest{} } -func (m *ListMembersRequest) String() string { return proto.CompactTextString(m) } -func (*ListMembersRequest) ProtoMessage() {} +func (x *ListMembersRequest) Reset() { + *x = ListMembersRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListMembersRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMembersRequest) ProtoMessage() {} + +func (x *ListMembersRequest) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMembersRequest.ProtoReflect.Descriptor instead. func (*ListMembersRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{17} + return file_accounts_proto_rawDescGZIP(), []int{17} } -func (m *ListMembersRequest) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListMembersRequest.Unmarshal(m, b) -} -func (m *ListMembersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListMembersRequest.Marshal(b, m, deterministic) -} -func (m *ListMembersRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListMembersRequest.Merge(m, src) -} -func (m *ListMembersRequest) XXX_Size() int { - return xxx_messageInfo_ListMembersRequest.Size(m) -} -func (m *ListMembersRequest) XXX_DiscardUnknown() { - xxx_messageInfo_ListMembersRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_ListMembersRequest proto.InternalMessageInfo - -func (m *ListMembersRequest) GetPageSize() int32 { - if m != nil { - return m.PageSize +func (x *ListMembersRequest) GetPageSize() int32 { + if x != nil { + return x.PageSize } return 0 } -func (m *ListMembersRequest) GetPageToken() string { - if m != nil { - return m.PageToken +func (x *ListMembersRequest) GetPageToken() string { + if x != nil { + return x.PageToken } return "" } -func (m *ListMembersRequest) GetFieldMask() *field_mask.FieldMask { - if m != nil { - return m.FieldMask +func (x *ListMembersRequest) GetFieldMask() *field_mask.FieldMask { + if x != nil { + return x.FieldMask } return nil } -func (m *ListMembersRequest) GetQuery() string { - if m != nil { - return m.Query +func (x *ListMembersRequest) GetQuery() string { + if x != nil { + return x.Query + } + return "" +} + +func (x *ListMembersRequest) GetId() string { + if x != nil { + return x.Id } return "" } type ListMembersResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The field name should match the noun "members" in the method name. There // will be a maximum number of items returned based on the page_size field // in the request Members []*Account `protobuf:"bytes,1,rep,name=members,proto3" json:"members,omitempty"` // Token to retrieve the next page of results, or empty if there are no // more results in the list - NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + NextPageToken string `protobuf:"bytes,2,opt,name=next_page_token,json=nextPageToken,proto3" json:"next_page_token,omitempty"` } -func (m *ListMembersResponse) Reset() { *m = ListMembersResponse{} } -func (m *ListMembersResponse) String() string { return proto.CompactTextString(m) } -func (*ListMembersResponse) ProtoMessage() {} +func (x *ListMembersResponse) Reset() { + *x = ListMembersResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListMembersResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMembersResponse) ProtoMessage() {} + +func (x *ListMembersResponse) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMembersResponse.ProtoReflect.Descriptor instead. func (*ListMembersResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{18} + return file_accounts_proto_rawDescGZIP(), []int{18} } -func (m *ListMembersResponse) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_ListMembersResponse.Unmarshal(m, b) -} -func (m *ListMembersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_ListMembersResponse.Marshal(b, m, deterministic) -} -func (m *ListMembersResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_ListMembersResponse.Merge(m, src) -} -func (m *ListMembersResponse) XXX_Size() int { - return xxx_messageInfo_ListMembersResponse.Size(m) -} -func (m *ListMembersResponse) XXX_DiscardUnknown() { - xxx_messageInfo_ListMembersResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_ListMembersResponse proto.InternalMessageInfo - -func (m *ListMembersResponse) GetMembers() []*Account { - if m != nil { - return m.Members +func (x *ListMembersResponse) GetMembers() []*Account { + if x != nil { + return x.Members } return nil } -func (m *ListMembersResponse) GetNextPageToken() string { - if m != nil { - return m.NextPageToken +func (x *ListMembersResponse) GetNextPageToken() string { + if x != nil { + return x.NextPageToken } return "" } type Group struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // The unique identifier for the group. // Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // The display name for the group. This property is required when a group is created and cannot be cleared during updates. // Returned by default. Supports $filter and $orderby. // groupofnames MUST cn - DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` + DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"` // groupofnames MUST/MAY member // Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable. // TODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later Members []*Account `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` @@ -1403,177 +1581,185 @@ type Group struct { OnPremisesLastSyncDateTime string `protobuf:"bytes,27,opt,name=on_premises_last_sync_date_time,json=onPremisesLastSyncDateTime,proto3" json:"on_premises_last_sync_date_time,omitempty"` // Errors when using synchronization during provisioning. OnPremisesProvisioningErrors []*OnPremisesProvisioningError `protobuf:"bytes,28,rep,name=on_premises_provisioning_errors,json=onPremisesProvisioningErrors,proto3" json:"on_premises_provisioning_errors,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` } -func (m *Group) Reset() { *m = Group{} } -func (m *Group) String() string { return proto.CompactTextString(m) } -func (*Group) ProtoMessage() {} +func (x *Group) Reset() { + *x = Group{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Group) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Group) ProtoMessage() {} + +func (x *Group) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Group.ProtoReflect.Descriptor instead. func (*Group) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{19} + return file_accounts_proto_rawDescGZIP(), []int{19} } -func (m *Group) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_Group.Unmarshal(m, b) -} -func (m *Group) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_Group.Marshal(b, m, deterministic) -} -func (m *Group) XXX_Merge(src proto.Message) { - xxx_messageInfo_Group.Merge(m, src) -} -func (m *Group) XXX_Size() int { - return xxx_messageInfo_Group.Size(m) -} -func (m *Group) XXX_DiscardUnknown() { - xxx_messageInfo_Group.DiscardUnknown(m) -} - -var xxx_messageInfo_Group proto.InternalMessageInfo - -func (m *Group) GetId() string { - if m != nil { - return m.Id +func (x *Group) GetId() string { + if x != nil { + return x.Id } return "" } -func (m *Group) GetDisplayName() string { - if m != nil { - return m.DisplayName +func (x *Group) GetDisplayName() string { + if x != nil { + return x.DisplayName } return "" } -func (m *Group) GetMembers() []*Account { - if m != nil { - return m.Members +func (x *Group) GetMembers() []*Account { + if x != nil { + return x.Members } return nil } -func (m *Group) GetOwners() []*Account { - if m != nil { - return m.Owners +func (x *Group) GetOwners() []*Account { + if x != nil { + return x.Owners } return nil } -func (m *Group) GetDescription() string { - if m != nil { - return m.Description +func (x *Group) GetDescription() string { + if x != nil { + return x.Description } return "" } -func (m *Group) GetGidNumber() int64 { - if m != nil { - return m.GidNumber +func (x *Group) GetGidNumber() int64 { + if x != nil { + return x.GidNumber } return 0 } -func (m *Group) GetCreatedDateTime() *timestamp.Timestamp { - if m != nil { - return m.CreatedDateTime +func (x *Group) GetCreatedDateTime() *timestamp.Timestamp { + if x != nil { + return x.CreatedDateTime } return nil } -func (m *Group) GetDeletedDateTime() *timestamp.Timestamp { - if m != nil { - return m.DeletedDateTime +func (x *Group) GetDeletedDateTime() *timestamp.Timestamp { + if x != nil { + return x.DeletedDateTime } return nil } -func (m *Group) GetExpirationDateTime() *timestamp.Timestamp { - if m != nil { - return m.ExpirationDateTime +func (x *Group) GetExpirationDateTime() *timestamp.Timestamp { + if x != nil { + return x.ExpirationDateTime } return nil } -func (m *Group) GetHideFromAddressLists() bool { - if m != nil { - return m.HideFromAddressLists +func (x *Group) GetHideFromAddressLists() bool { + if x != nil { + return x.HideFromAddressLists } return false } -func (m *Group) GetVisibility() string { - if m != nil { - return m.Visibility +func (x *Group) GetVisibility() string { + if x != nil { + return x.Visibility } return "" } -func (m *Group) GetOnPremisesSyncEnabled() bool { - if m != nil { - return m.OnPremisesSyncEnabled +func (x *Group) GetOnPremisesSyncEnabled() bool { + if x != nil { + return x.OnPremisesSyncEnabled } return false } -func (m *Group) GetOnPremisesImmutableId() string { - if m != nil { - return m.OnPremisesImmutableId +func (x *Group) GetOnPremisesImmutableId() string { + if x != nil { + return x.OnPremisesImmutableId } return "" } -func (m *Group) GetOnPremisesSecurityIdentifier() string { - if m != nil { - return m.OnPremisesSecurityIdentifier +func (x *Group) GetOnPremisesSecurityIdentifier() string { + if x != nil { + return x.OnPremisesSecurityIdentifier } return "" } -func (m *Group) GetOnPremisesDistinguishedName() string { - if m != nil { - return m.OnPremisesDistinguishedName +func (x *Group) GetOnPremisesDistinguishedName() string { + if x != nil { + return x.OnPremisesDistinguishedName } return "" } -func (m *Group) GetOnPremisesSamAccountName() string { - if m != nil { - return m.OnPremisesSamAccountName +func (x *Group) GetOnPremisesSamAccountName() string { + if x != nil { + return x.OnPremisesSamAccountName } return "" } -func (m *Group) GetOnPremisesDomainName() string { - if m != nil { - return m.OnPremisesDomainName +func (x *Group) GetOnPremisesDomainName() string { + if x != nil { + return x.OnPremisesDomainName } return "" } -func (m *Group) GetOnPremisesNetBiosName() string { - if m != nil { - return m.OnPremisesNetBiosName +func (x *Group) GetOnPremisesNetBiosName() string { + if x != nil { + return x.OnPremisesNetBiosName } return "" } -func (m *Group) GetOnPremisesLastSyncDateTime() string { - if m != nil { - return m.OnPremisesLastSyncDateTime +func (x *Group) GetOnPremisesLastSyncDateTime() string { + if x != nil { + return x.OnPremisesLastSyncDateTime } return "" } -func (m *Group) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { - if m != nil { - return m.OnPremisesProvisioningErrors +func (x *Group) GetOnPremisesProvisioningErrors() []*OnPremisesProvisioningError { + if x != nil { + return x.OnPremisesProvisioningErrors } return nil } type OnPremisesProvisioningError struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + // Category of the provisioning error. Note: Currently, there is only one possible value. Possible value: PropertyConflict - indicates a property value is not unique. Other objects contain the same value for the property. Category string `protobuf:"bytes,1,opt,name=category,proto3" json:"category,omitempty"` // The date and time at which the error occurred. @@ -1581,213 +1767,867 @@ type OnPremisesProvisioningError struct { // Name of the directory property causing the error. Current possible values: UserPrincipalName or ProxyAddress PropertyCausingError string `protobuf:"bytes,3,opt,name=property_causing_error,json=propertyCausingError,proto3" json:"property_causing_error,omitempty"` // Value of the property causing the error. - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` } -func (m *OnPremisesProvisioningError) Reset() { *m = OnPremisesProvisioningError{} } -func (m *OnPremisesProvisioningError) String() string { return proto.CompactTextString(m) } -func (*OnPremisesProvisioningError) ProtoMessage() {} +func (x *OnPremisesProvisioningError) Reset() { + *x = OnPremisesProvisioningError{} + if protoimpl.UnsafeEnabled { + mi := &file_accounts_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OnPremisesProvisioningError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnPremisesProvisioningError) ProtoMessage() {} + +func (x *OnPremisesProvisioningError) ProtoReflect() protoreflect.Message { + mi := &file_accounts_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnPremisesProvisioningError.ProtoReflect.Descriptor instead. func (*OnPremisesProvisioningError) Descriptor() ([]byte, []int) { - return fileDescriptor_e1e7723af4c007b7, []int{20} + return file_accounts_proto_rawDescGZIP(), []int{20} } -func (m *OnPremisesProvisioningError) XXX_Unmarshal(b []byte) error { - return xxx_messageInfo_OnPremisesProvisioningError.Unmarshal(m, b) -} -func (m *OnPremisesProvisioningError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - return xxx_messageInfo_OnPremisesProvisioningError.Marshal(b, m, deterministic) -} -func (m *OnPremisesProvisioningError) XXX_Merge(src proto.Message) { - xxx_messageInfo_OnPremisesProvisioningError.Merge(m, src) -} -func (m *OnPremisesProvisioningError) XXX_Size() int { - return xxx_messageInfo_OnPremisesProvisioningError.Size(m) -} -func (m *OnPremisesProvisioningError) XXX_DiscardUnknown() { - xxx_messageInfo_OnPremisesProvisioningError.DiscardUnknown(m) -} - -var xxx_messageInfo_OnPremisesProvisioningError proto.InternalMessageInfo - -func (m *OnPremisesProvisioningError) GetCategory() string { - if m != nil { - return m.Category +func (x *OnPremisesProvisioningError) GetCategory() string { + if x != nil { + return x.Category } return "" } -func (m *OnPremisesProvisioningError) GetOccurredDateTime() *timestamp.Timestamp { - if m != nil { - return m.OccurredDateTime +func (x *OnPremisesProvisioningError) GetOccurredDateTime() *timestamp.Timestamp { + if x != nil { + return x.OccurredDateTime } return nil } -func (m *OnPremisesProvisioningError) GetPropertyCausingError() string { - if m != nil { - return m.PropertyCausingError +func (x *OnPremisesProvisioningError) GetPropertyCausingError() string { + if x != nil { + return x.PropertyCausingError } return "" } -func (m *OnPremisesProvisioningError) GetValue() string { - if m != nil { - return m.Value +func (x *OnPremisesProvisioningError) GetValue() string { + if x != nil { + return x.Value } return "" } -func init() { - proto.RegisterType((*ListAccountsRequest)(nil), "settings.ListAccountsRequest") - proto.RegisterType((*ListAccountsResponse)(nil), "settings.ListAccountsResponse") - proto.RegisterType((*GetAccountRequest)(nil), "settings.GetAccountRequest") - proto.RegisterType((*CreateAccountRequest)(nil), "settings.CreateAccountRequest") - proto.RegisterType((*UpdateAccountRequest)(nil), "settings.UpdateAccountRequest") - proto.RegisterType((*DeleteAccountRequest)(nil), "settings.DeleteAccountRequest") - proto.RegisterType((*Account)(nil), "settings.Account") - proto.RegisterType((*Identities)(nil), "settings.Identities") - proto.RegisterType((*PasswordProfile)(nil), "settings.PasswordProfile") - proto.RegisterType((*ListGroupsRequest)(nil), "settings.ListGroupsRequest") - proto.RegisterType((*ListGroupsResponse)(nil), "settings.ListGroupsResponse") - proto.RegisterType((*GetGroupRequest)(nil), "settings.GetGroupRequest") - proto.RegisterType((*CreateGroupRequest)(nil), "settings.CreateGroupRequest") - proto.RegisterType((*UpdateGroupRequest)(nil), "settings.UpdateGroupRequest") - proto.RegisterType((*DeleteGroupRequest)(nil), "settings.DeleteGroupRequest") - proto.RegisterType((*AddMemberRequest)(nil), "settings.AddMemberRequest") - proto.RegisterType((*RemoveMemberRequest)(nil), "settings.RemoveMemberRequest") - proto.RegisterType((*ListMembersRequest)(nil), "settings.ListMembersRequest") - proto.RegisterType((*ListMembersResponse)(nil), "settings.ListMembersResponse") - proto.RegisterType((*Group)(nil), "settings.Group") - proto.RegisterType((*OnPremisesProvisioningError)(nil), "settings.OnPremisesProvisioningError") +var File_accounts_proto protoreflect.FileDescriptor + +var file_accounts_proto_rawDesc = []byte{ + 0x0a, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x12, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x65, 0x6d, 0x70, 0x74, 0x79, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, + 0x73, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb1, 0x01, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, + 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, + 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, + 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x6d, 0x0a, + 0x14, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, + 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, + 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x23, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x43, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x80, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x2b, 0x0a, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x52, 0x07, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3b, 0x0a, 0x0b, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x26, 0x0a, 0x14, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x88, 0x0d, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x27, 0x0a, + 0x0f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x45, + 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x11, 0x69, 0x73, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x69, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x49, 0x64, 0x65, 0x6e, 0x74, + 0x69, 0x74, 0x69, 0x65, 0x73, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, + 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, + 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, + 0x69, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x09, 0x75, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x69, + 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, + 0x67, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x44, 0x0a, 0x10, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x0f, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x2b, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x4f, + 0x66, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x4f, 0x66, 0x12, 0x46, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, + 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x0f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, + 0x73, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, + 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x69, 0x6d, 0x6d, 0x75, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x49, 0x6d, 0x6d, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, + 0x73, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x1e, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x3e, 0x0a, 0x1c, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x73, 0x61, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, + 0x65, 0x73, 0x53, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x44, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x69, 0x6e, + 0x63, 0x69, 0x70, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x55, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x5f, 0x0a, + 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x6c, 0x61, 0x73, + 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x1c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x1a, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4c, 0x61, + 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, + 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x73, 0x18, 0x1d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, + 0x67, 0x73, 0x2e, 0x4f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x1c, + 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, + 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x28, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x69, 0x0a, 0x24, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x29, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1f, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x67, 0x0a, 0x23, 0x72, 0x65, 0x66, 0x72, 0x65, + 0x73, 0x68, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, + 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3c, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x1e, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x73, 0x56, + 0x61, 0x6c, 0x69, 0x64, 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, + 0x12, 0x6a, 0x0a, 0x25, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, + 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x3d, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1f, 0x73, 0x69, 0x67, + 0x6e, 0x49, 0x6e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x56, 0x61, 0x6c, 0x69, 0x64, + 0x46, 0x72, 0x6f, 0x6d, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x74, 0x0a, 0x0a, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0c, 0x73, 0x69, + 0x67, 0x6e, 0x5f, 0x69, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, + 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x73, + 0x73, 0x75, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x12, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x5f, 0x61, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x10, 0x69, 0x73, 0x73, 0x75, 0x65, 0x72, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, + 0x49, 0x64, 0x22, 0xe0, 0x02, 0x0a, 0x0f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, + 0x72, 0x64, 0x12, 0x5e, 0x0a, 0x1e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x1a, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, + 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x69, 0x65, 0x73, 0x12, + 0x49, 0x0a, 0x22, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, + 0x67, 0x6e, 0x5f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1d, 0x66, 0x6f, 0x72, + 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x4e, 0x65, 0x78, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x12, 0x59, 0x0a, 0x2b, 0x66, 0x6f, + 0x72, 0x63, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x5f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x5f, 0x69, 0x6e, + 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x6d, 0x66, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x24, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x73, 0x73, + 0x77, 0x6f, 0x72, 0x64, 0x4e, 0x65, 0x78, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x57, 0x69, + 0x74, 0x68, 0x4d, 0x66, 0x61, 0x22, 0xaf, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x22, 0x0a, + 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, + 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, + 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x12, 0x19, 0x0a, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x65, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, + 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x21, + 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x3b, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x78, + 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x52, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x3b, 0x0a, 0x0b, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x0a, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x24, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x22, + 0x0a, 0x10, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x44, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xc0, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, + 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x20, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, + 0x65, 0x12, 0x22, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, + 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x52, 0x09, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, + 0x12, 0x19, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x01, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x6a, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, + 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, + 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, + 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xea, 0x08, 0x0a, 0x05, 0x47, 0x72, 0x6f, 0x75, + 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, + 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x12, 0x29, 0x0a, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x06, 0x6f, 0x77, 0x6e, 0x65, 0x72, 0x73, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1d, + 0x0a, 0x0a, 0x67, 0x69, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x09, 0x67, 0x69, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x46, 0x0a, + 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, + 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, + 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x46, 0x0a, 0x11, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, + 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0f, 0x64, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x4c, 0x0a, + 0x14, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x61, 0x74, 0x65, + 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x12, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x35, 0x0a, 0x17, 0x68, + 0x69, 0x64, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x14, 0x68, 0x69, + 0x64, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x4c, 0x69, 0x73, + 0x74, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x76, 0x69, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x37, 0x0a, 0x18, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, + 0x73, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, + 0x53, 0x79, 0x6e, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x18, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x69, 0x6d, 0x6d, 0x75, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x49, 0x6d, 0x6d, 0x75, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x45, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, + 0x73, 0x65, 0x73, 0x5f, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1c, 0x6f, + 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, + 0x79, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x43, 0x0a, 0x1e, 0x6f, + 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x17, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x1b, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, + 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x75, 0x69, 0x73, 0x68, 0x65, 0x64, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x3e, 0x0a, 0x1c, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x73, 0x61, 0x6d, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x18, 0x20, 0x01, 0x28, 0x09, 0x52, 0x18, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, + 0x65, 0x73, 0x53, 0x61, 0x6d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x12, 0x35, 0x0a, 0x17, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, + 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x19, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x14, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x44, 0x6f, 0x6d, + 0x61, 0x69, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x19, 0x6f, 0x6e, 0x5f, 0x70, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x6e, 0x65, 0x74, 0x5f, 0x62, 0x69, 0x6f, 0x73, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x6f, 0x6e, 0x50, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4e, 0x65, 0x74, 0x42, 0x69, 0x6f, 0x73, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x43, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, + 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x79, 0x6e, 0x63, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x69, 0x6d, 0x65, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x1a, 0x6f, 0x6e, 0x50, 0x72, + 0x65, 0x6d, 0x69, 0x73, 0x65, 0x73, 0x4c, 0x61, 0x73, 0x74, 0x53, 0x79, 0x6e, 0x63, 0x44, 0x61, + 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x6c, 0x0a, 0x1f, 0x6f, 0x6e, 0x5f, 0x70, 0x72, 0x65, + 0x6d, 0x69, 0x73, 0x65, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, + 0x6e, 0x67, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x1c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x25, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4f, 0x6e, 0x50, 0x72, 0x65, + 0x6d, 0x69, 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, + 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x1c, 0x6f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x73, + 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x73, 0x22, 0xcf, 0x01, 0x0a, 0x1b, 0x4f, 0x6e, 0x50, 0x72, 0x65, 0x6d, 0x69, + 0x73, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, + 0x12, 0x48, 0x0a, 0x12, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x10, 0x6f, 0x63, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x63, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x14, 0x70, 0x72, 0x6f, 0x70, + 0x65, 0x72, 0x74, 0x79, 0x43, 0x61, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x45, 0x72, 0x72, 0x6f, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0xcb, 0x04, 0x0a, 0x0f, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x78, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, + 0x23, 0x22, 0x1e, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x6c, 0x69, 0x73, + 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x66, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x11, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x22, 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x1d, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x67, 0x65, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, 0x0d, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, + 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2d, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x6f, 0x0a, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1e, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, + 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x74, + 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x1e, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, + 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x30, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2d, 0x64, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x3a, 0x01, 0x2a, 0x32, 0xac, 0x06, 0x0a, 0x0d, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5b, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x73, 0x12, 0x1b, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x12, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0c, 0x12, 0x0a, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x12, 0x51, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x19, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x57, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x22, 0x0a, 0x2f, 0x76, + 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x3a, 0x05, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, + 0x64, 0x0a, 0x0b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x26, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x32, 0x17, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x2f, 0x7b, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x2e, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x3a, 0x05, + 0x67, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x5e, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, + 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1c, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x13, 0x2a, 0x11, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x12, 0x63, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x41, 0x64, + 0x64, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, + 0x29, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x23, 0x22, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x3a, 0x01, 0x2a, 0x12, 0x73, 0x0a, 0x0c, 0x52, 0x65, + 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x73, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x73, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2d, 0x2a, 0x2b, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x24, 0x72, 0x65, 0x66, 0x12, + 0x72, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x1c, + 0x2e, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x73, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x20, 0x12, 0x1e, 0x2f, 0x76, 0x30, 0x2f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x3d, 0x2a, 0x7d, 0x2f, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x2f, 0x24, + 0x72, 0x65, 0x66, 0x42, 0x14, 0x5a, 0x12, 0x70, 0x6b, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x2f, 0x76, 0x30, 0x3b, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } -func init() { proto.RegisterFile("accounts.proto", fileDescriptor_e1e7723af4c007b7) } +var ( + file_accounts_proto_rawDescOnce sync.Once + file_accounts_proto_rawDescData = file_accounts_proto_rawDesc +) -var fileDescriptor_e1e7723af4c007b7 = []byte{ - // 1951 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x59, 0x5b, 0x4f, 0x1c, 0xc9, - 0x15, 0xd6, 0x80, 0x81, 0xe1, 0x0c, 0x18, 0x28, 0xc6, 0xd0, 0x0c, 0x17, 0xcf, 0xb6, 0x8d, 0x17, - 0xc3, 0x06, 0x2c, 0xb2, 0x9b, 0x8b, 0x9d, 0x8d, 0x84, 0xc1, 0x76, 0x90, 0x6c, 0x2f, 0x1a, 0xbc, - 0x59, 0xe5, 0xa2, 0x6d, 0x35, 0xdd, 0x35, 0x43, 0xad, 0xa7, 0x2f, 0x5b, 0x55, 0x3d, 0x66, 0x36, - 0x5a, 0x29, 0xca, 0x53, 0xde, 0xf2, 0x90, 0x1f, 0x92, 0xcb, 0x1f, 0xc9, 0x43, 0xfe, 0xc0, 0x3e, - 0xe4, 0x29, 0xbf, 0x22, 0xaa, 0x4b, 0x77, 0xd7, 0x74, 0xcf, 0x30, 0xbb, 0xf1, 0x4a, 0x91, 0xa5, - 0x3c, 0xd1, 0x5d, 0xe7, 0x3b, 0xdf, 0x39, 0x75, 0xea, 0x4c, 0xd5, 0xd7, 0x05, 0xdc, 0x74, 0x3d, - 0x2f, 0x4a, 0x42, 0xce, 0xf6, 0x63, 0x1a, 0xf1, 0x08, 0x55, 0x19, 0xe6, 0x9c, 0x84, 0x1d, 0xd6, - 0xb8, 0xdd, 0x89, 0xa2, 0x4e, 0x17, 0x1f, 0xb8, 0x31, 0x39, 0x68, 0x13, 0xdc, 0xf5, 0x9d, 0x0b, - 0x7c, 0xe9, 0xf6, 0x48, 0x44, 0x15, 0xb4, 0xb1, 0x61, 0x00, 0xdc, 0x30, 0x8c, 0xb8, 0xcb, 0x49, - 0x14, 0x6a, 0xa2, 0xc6, 0xba, 0xb6, 0xca, 0xb7, 0x8b, 0xa4, 0x7d, 0x80, 0x83, 0x98, 0xf7, 0xb5, - 0xb1, 0x59, 0x34, 0xaa, 0x00, 0x81, 0xcb, 0x5e, 0x6b, 0xc4, 0xed, 0x22, 0x82, 0x93, 0x00, 0x33, - 0xee, 0x06, 0xb1, 0x02, 0xd8, 0x7f, 0xab, 0xc0, 0xf2, 0x73, 0xc2, 0xf8, 0x91, 0xce, 0xbf, 0x85, - 0xbf, 0x4c, 0x30, 0xe3, 0xa8, 0x09, 0xb3, 0xb1, 0xdb, 0xc1, 0x0e, 0x23, 0x5f, 0x61, 0xab, 0xd2, - 0xac, 0xec, 0x4c, 0x3d, 0x9e, 0xfc, 0xe6, 0xa8, 0xd2, 0xaa, 0x8a, 0xd1, 0x73, 0xf2, 0x15, 0x46, - 0x36, 0x80, 0x44, 0xf0, 0xe8, 0x35, 0x0e, 0xad, 0x89, 0x66, 0x65, 0x67, 0x56, 0x41, 0xa4, 0xe3, - 0x2b, 0x31, 0x8a, 0x7e, 0x0a, 0x90, 0xa7, 0x64, 0x4d, 0x36, 0x2b, 0x3b, 0xb5, 0xc3, 0xc6, 0xbe, - 0xca, 0x69, 0x3f, 0xcd, 0x69, 0xff, 0xa9, 0x80, 0xbc, 0x70, 0xd9, 0xeb, 0xd6, 0x6c, 0x3b, 0x7d, - 0x44, 0x6b, 0x30, 0xf5, 0x65, 0x82, 0x69, 0xdf, 0xba, 0x91, 0x33, 0xab, 0x11, 0x3b, 0x80, 0xfa, - 0x60, 0xca, 0x2c, 0x8e, 0x42, 0x86, 0xd1, 0x0f, 0xa0, 0x9a, 0x2e, 0x83, 0x55, 0x69, 0x4e, 0xee, - 0xd4, 0x0e, 0x97, 0xf6, 0xd3, 0x75, 0xd8, 0xd7, 0xe8, 0x56, 0x06, 0x41, 0xf7, 0x60, 0x21, 0xc4, - 0x57, 0xdc, 0x29, 0xce, 0xa2, 0x35, 0x2f, 0x86, 0xcf, 0xd2, 0x49, 0xd8, 0x77, 0x60, 0xe9, 0x19, - 0x4e, 0xa3, 0xa5, 0xf5, 0xb9, 0x09, 0x13, 0xc4, 0x97, 0x85, 0x99, 0x6d, 0x4d, 0x10, 0xdf, 0x3e, - 0x86, 0xfa, 0x31, 0xc5, 0x2e, 0xc7, 0x05, 0xdc, 0x1e, 0xcc, 0xe8, 0x80, 0x12, 0x3c, 0x34, 0xa5, - 0x14, 0x61, 0xff, 0xbe, 0x02, 0xf5, 0x4f, 0x63, 0xff, 0xed, 0x58, 0xd0, 0x23, 0xa8, 0x25, 0x92, - 0x44, 0x55, 0x7d, 0x62, 0x6c, 0xd5, 0x41, 0xc1, 0xc5, 0xb3, 0x7d, 0x0f, 0xea, 0x27, 0xb8, 0x8b, - 0x4b, 0x19, 0x14, 0xe7, 0xfb, 0xc7, 0x79, 0x98, 0xd1, 0x90, 0xa2, 0x0d, 0xbd, 0x0f, 0x0b, 0x3a, - 0x17, 0x07, 0x87, 0xee, 0x45, 0x17, 0xfb, 0x32, 0x89, 0x6a, 0x2b, 0xfd, 0x95, 0x3c, 0x51, 0xa3, - 0x68, 0x1f, 0x96, 0x09, 0x73, 0x28, 0x66, 0x51, 0x42, 0x3d, 0xec, 0xa4, 0x53, 0x9c, 0x94, 0xe0, - 0x25, 0x22, 0x56, 0x56, 0x5a, 0xd2, 0x40, 0x77, 0x60, 0xde, 0x13, 0x45, 0x26, 0x51, 0xe8, 0xf0, - 0x7e, 0x8c, 0x55, 0x6f, 0xb4, 0xe6, 0xd2, 0xc1, 0x57, 0xfd, 0x18, 0xa3, 0x0f, 0x01, 0x88, 0x8f, - 0x43, 0x4e, 0x38, 0xc1, 0xcc, 0x9a, 0x92, 0x7d, 0x50, 0xcf, 0xcb, 0x75, 0x9a, 0xd9, 0x5a, 0x06, - 0x0e, 0xbd, 0x07, 0x73, 0x3e, 0x61, 0x71, 0xd7, 0xed, 0x3b, 0xa1, 0x1b, 0x60, 0x6b, 0x5a, 0x32, - 0xd7, 0xf4, 0xd8, 0x4b, 0x37, 0xc0, 0x68, 0x1b, 0x6e, 0xc6, 0x14, 0xb7, 0x31, 0xa5, 0xd8, 0x57, - 0xa0, 0x19, 0xd5, 0x2e, 0xd9, 0xa8, 0x84, 0x6d, 0x02, 0x24, 0xc4, 0x77, 0xc2, 0x24, 0xb8, 0xc0, - 0xd4, 0xaa, 0x36, 0x2b, 0x3b, 0x93, 0xad, 0xd9, 0x84, 0xf8, 0x2f, 0xe5, 0x80, 0x30, 0x77, 0x72, - 0xf3, 0xac, 0x32, 0x77, 0x32, 0x33, 0x82, 0x1b, 0x81, 0x4b, 0xba, 0x16, 0x48, 0x6a, 0xf9, 0x8c, - 0x9a, 0x50, 0xf3, 0x31, 0xf3, 0x28, 0x89, 0xc5, 0x24, 0xad, 0x9a, 0x4e, 0x2d, 0x1f, 0x42, 0x27, - 0xb0, 0x18, 0xbb, 0x8c, 0xbd, 0x89, 0xa8, 0xef, 0xc4, 0x34, 0x6a, 0x93, 0x2e, 0xb6, 0xe6, 0xe4, - 0xba, 0xaf, 0xe5, 0x33, 0x3f, 0xd3, 0x88, 0x33, 0x05, 0x68, 0x2d, 0xc4, 0x83, 0x03, 0x68, 0x0f, - 0xaa, 0x01, 0x16, 0x59, 0x7c, 0xd2, 0xb6, 0xe6, 0x65, 0xdd, 0x16, 0x72, 0xef, 0x67, 0x34, 0x4a, - 0xe2, 0x56, 0x06, 0x40, 0x4f, 0x61, 0x49, 0x96, 0x1d, 0xfb, 0x8e, 0xec, 0x35, 0xb1, 0xb1, 0x58, - 0x8b, 0x23, 0x7a, 0xed, 0x55, 0xba, 0xeb, 0xb4, 0x16, 0xb4, 0xd3, 0x89, 0xcb, 0xb1, 0x18, 0x15, - 0x3c, 0xbe, 0x6c, 0x38, 0x93, 0x67, 0x69, 0x3c, 0x8f, 0x76, 0xca, 0x78, 0x7e, 0x0c, 0x56, 0x14, - 0x3a, 0x31, 0xc5, 0x01, 0x61, 0x98, 0x39, 0xac, 0x1f, 0x7a, 0x59, 0xf7, 0xd5, 0x65, 0x43, 0xdd, - 0x8a, 0xc2, 0x33, 0x6d, 0x3e, 0xef, 0x87, 0x5e, 0xda, 0x84, 0x05, 0x47, 0x12, 0x04, 0x09, 0x17, - 0x16, 0x87, 0xf8, 0xd6, 0x2d, 0x59, 0x6a, 0xc3, 0xf1, 0x34, 0xb5, 0x9e, 0xfa, 0xe8, 0x09, 0xdc, - 0x1e, 0x88, 0x88, 0xbd, 0x84, 0x12, 0xde, 0x77, 0x54, 0x57, 0xb5, 0x09, 0xa6, 0xd6, 0x8a, 0xf4, - 0xdf, 0x30, 0x02, 0x6b, 0xd0, 0x69, 0x86, 0x41, 0xc7, 0xb0, 0x65, 0xd2, 0xf8, 0x84, 0x89, 0x82, - 0x27, 0x84, 0x5d, 0xa6, 0x6d, 0xb6, 0x2a, 0x59, 0xd6, 0x73, 0x96, 0x13, 0x13, 0x23, 0x9b, 0xee, - 0xe7, 0xb0, 0x31, 0x90, 0x8b, 0x1b, 0xa4, 0xbf, 0x26, 0x45, 0x61, 0x49, 0x0a, 0xcb, 0x48, 0xc4, - 0x0d, 0xf4, 0xaf, 0x4a, 0xfa, 0x7f, 0x04, 0xab, 0x03, 0x49, 0x44, 0x81, 0x4b, 0x42, 0xe5, 0xba, - 0x26, 0x5d, 0xeb, 0x46, 0x74, 0x69, 0x94, 0x6e, 0x27, 0x83, 0x25, 0x48, 0x18, 0xa6, 0x4e, 0x4c, - 0x49, 0xe8, 0x91, 0xd8, 0xed, 0x2a, 0xf7, 0x46, 0x31, 0xf9, 0x4f, 0x19, 0xa6, 0x67, 0x29, 0x46, - 0xb2, 0x38, 0x83, 0x2c, 0x5d, 0x97, 0x71, 0xb5, 0x7e, 0x79, 0x43, 0x6c, 0x8c, 0x6d, 0x88, 0x46, - 0x1e, 0xe1, 0xb9, 0xcb, 0xb8, 0x58, 0xe1, 0xac, 0x37, 0xba, 0x83, 0x01, 0x62, 0x1a, 0xf5, 0x08, - 0x23, 0x51, 0x48, 0xc2, 0x8e, 0x83, 0x29, 0x8d, 0x28, 0xb3, 0x36, 0x65, 0xbf, 0x6f, 0xe7, 0xfd, - 0xfe, 0x49, 0x46, 0x77, 0x66, 0xc0, 0x9f, 0x08, 0xb4, 0xb9, 0xa0, 0x25, 0x23, 0x13, 0xbb, 0x1a, - 0xbe, 0xe2, 0x98, 0x86, 0x6e, 0x57, 0x55, 0x84, 0x71, 0x97, 0x63, 0x6b, 0x47, 0x16, 0x62, 0x29, - 0x35, 0x89, 0x32, 0x9c, 0x0b, 0x03, 0x22, 0x70, 0x77, 0x08, 0xde, 0xf1, 0x2e, 0xdd, 0xb0, 0x83, - 0x8d, 0x1a, 0xdc, 0x1f, 0x5b, 0x83, 0xdb, 0x25, 0xf2, 0x63, 0x49, 0x92, 0x15, 0xa2, 0x03, 0x77, - 0x28, 0x6e, 0x53, 0xcc, 0x2e, 0xd5, 0x81, 0xc7, 0x9c, 0x9e, 0xdb, 0x25, 0xbe, 0xd3, 0xa6, 0x51, - 0x60, 0x44, 0xfa, 0xd9, 0xd8, 0x48, 0x5b, 0x9a, 0x46, 0x9e, 0x90, 0xec, 0x97, 0x82, 0xe4, 0x29, - 0x8d, 0x82, 0x2c, 0xd0, 0x17, 0xb0, 0xcd, 0x48, 0x27, 0x74, 0x48, 0xe8, 0x30, 0xcc, 0x44, 0x7d, - 0x46, 0x84, 0xfa, 0x78, 0xfc, 0xa4, 0x04, 0xd1, 0x69, 0x78, 0xae, 0x69, 0x4a, 0xb1, 0x6c, 0x0e, - 0x90, 0x6f, 0xea, 0xa8, 0x09, 0x73, 0x69, 0x64, 0x79, 0x44, 0xa8, 0x63, 0x09, 0x14, 0x89, 0x3c, - 0x20, 0x56, 0x60, 0x9a, 0x30, 0x96, 0x60, 0xaa, 0x8f, 0x7b, 0xfd, 0x86, 0x3e, 0x00, 0xa4, 0x9e, - 0x1c, 0x97, 0x09, 0x38, 0xf6, 0xc5, 0x16, 0x30, 0x29, 0x31, 0x8b, 0xca, 0x72, 0xa4, 0x0d, 0xa7, - 0xbe, 0xfd, 0xcd, 0x04, 0x2c, 0x14, 0x76, 0x54, 0xd4, 0x80, 0x6a, 0xba, 0xa7, 0xea, 0xb8, 0xd9, - 0x3b, 0xfa, 0x1c, 0xb6, 0x64, 0x63, 0x67, 0xfb, 0x74, 0x69, 0x7d, 0x27, 0xc6, 0xf7, 0xb8, 0x60, - 0x48, 0x83, 0x16, 0x96, 0x76, 0x0f, 0x96, 0xf2, 0x23, 0x20, 0xea, 0x12, 0x4f, 0x9c, 0x7e, 0x93, - 0xcd, 0x49, 0x91, 0x7c, 0xb6, 0xd1, 0xeb, 0x71, 0x74, 0x0a, 0x76, 0x3b, 0x12, 0x47, 0xae, 0x4e, - 0x22, 0xf3, 0x94, 0x82, 0x48, 0xd7, 0x4f, 0x9e, 0xae, 0xd5, 0xd6, 0xa6, 0x44, 0xaa, 0x68, 0x69, - 0xec, 0x97, 0xf8, 0x8a, 0x9f, 0xcb, 0x8a, 0xa2, 0x5f, 0xc1, 0xde, 0x78, 0x2a, 0xe7, 0x0d, 0xe1, - 0x97, 0x4e, 0xd0, 0x76, 0xad, 0x29, 0xc9, 0x79, 0xf7, 0x5a, 0xce, 0xcf, 0x08, 0xbf, 0x7c, 0xd1, - 0x76, 0xed, 0xbf, 0x54, 0x60, 0x49, 0x08, 0x3d, 0x79, 0xf4, 0xbc, 0x13, 0xca, 0x14, 0x03, 0x32, - 0x13, 0xd6, 0xba, 0xf4, 0x7d, 0x98, 0xee, 0xc8, 0x11, 0xad, 0x4a, 0x4b, 0xa7, 0xaa, 0x36, 0x7f, - 0x6b, 0x45, 0xfa, 0x1e, 0x2c, 0x3c, 0xc3, 0x2a, 0xca, 0x28, 0x7d, 0xf6, 0x08, 0x90, 0xd2, 0xa3, - 0x03, 0xa8, 0x6d, 0x98, 0x92, 0xa1, 0xb4, 0x8a, 0x2c, 0x25, 0xa2, 0xac, 0xf6, 0x15, 0x20, 0x25, - 0x43, 0xff, 0x0b, 0xe7, 0xb7, 0x93, 0x9f, 0x77, 0x01, 0x29, 0xf9, 0x79, 0xed, 0xe4, 0x6c, 0x58, - 0x3c, 0xf2, 0xfd, 0x17, 0x52, 0x8a, 0x8c, 0xc2, 0x6c, 0xc3, 0x72, 0x0b, 0x07, 0x51, 0x0f, 0x5f, - 0x0f, 0xfb, 0x6b, 0x45, 0x2d, 0x99, 0x42, 0xbd, 0x13, 0x4d, 0xf6, 0x85, 0xfa, 0x62, 0xcb, 0x32, - 0xd6, 0x5d, 0xb6, 0x07, 0x33, 0x4a, 0x9c, 0x5d, 0xf3, 0xf1, 0x93, 0x22, 0xbe, 0x75, 0xa7, 0xfd, - 0xbb, 0x0a, 0x53, 0x72, 0x29, 0x4a, 0x22, 0xbf, 0x28, 0x98, 0x27, 0xca, 0x82, 0xd9, 0xc8, 0x68, - 0x72, 0x6c, 0x46, 0xf7, 0x61, 0x3a, 0x7a, 0x13, 0x0a, 0xec, 0x8d, 0x51, 0x58, 0x0d, 0x28, 0xea, - 0xe1, 0xa9, 0xb2, 0x1e, 0x1e, 0x14, 0xd9, 0xd3, 0x45, 0x91, 0x3d, 0x54, 0xbb, 0xce, 0x7c, 0x4f, - 0xda, 0xb5, 0xfa, 0xdd, 0xb5, 0xeb, 0x73, 0xa8, 0xe3, 0xab, 0x98, 0x50, 0xf5, 0x65, 0x93, 0x53, - 0xcd, 0x8e, 0xa5, 0x42, 0xb9, 0x5f, 0xc6, 0xf6, 0x11, 0xac, 0x5e, 0x12, 0x1f, 0xab, 0x93, 0xd6, - 0xf5, 0x7d, 0x8a, 0x19, 0x73, 0xba, 0x84, 0x71, 0x26, 0xbf, 0x2a, 0xaa, 0xad, 0xba, 0x30, 0x8b, - 0x23, 0xf4, 0x48, 0x19, 0x45, 0x37, 0x31, 0xb4, 0x05, 0x20, 0x94, 0xcc, 0x05, 0xe9, 0x12, 0xde, - 0xd7, 0x1f, 0x19, 0xc6, 0xc8, 0xff, 0x05, 0xf6, 0xff, 0x42, 0x60, 0xff, 0x04, 0xd6, 0x4c, 0xb7, - 0x10, 0x73, 0xe7, 0x82, 0x44, 0xcc, 0x94, 0xd6, 0x46, 0xf1, 0x5e, 0x62, 0xfe, 0x98, 0x44, 0x4c, - 0x7a, 0x1e, 0x8f, 0x17, 0xd5, 0xeb, 0xd2, 0xff, 0x2d, 0x85, 0xf3, 0xc6, 0xf7, 0x26, 0x9c, 0xed, - 0x7f, 0x54, 0x60, 0xfd, 0x1a, 0x6f, 0x21, 0xaf, 0x3c, 0x97, 0xe3, 0x4e, 0x44, 0xfb, 0xa9, 0xbc, - 0x4a, 0xdf, 0xd1, 0x2f, 0x00, 0x45, 0x9e, 0x97, 0xc8, 0x6f, 0xf3, 0xef, 0x22, 0xa9, 0x16, 0x53, - 0xaf, 0x6c, 0xce, 0x1f, 0xc2, 0x4a, 0x4c, 0xa3, 0x18, 0x53, 0xde, 0x77, 0x3c, 0x37, 0x61, 0xd9, - 0x5c, 0xb5, 0x14, 0xac, 0xa7, 0xd6, 0x63, 0x65, 0x54, 0xb9, 0xd5, 0x61, 0xaa, 0xe7, 0x76, 0x93, - 0xf4, 0x4a, 0x42, 0xbd, 0x1c, 0xfe, 0xe9, 0x06, 0x2c, 0xa4, 0xd7, 0x54, 0xe7, 0x98, 0xf6, 0x88, - 0x87, 0x91, 0x07, 0x73, 0xe6, 0xed, 0x15, 0xda, 0xcc, 0x4b, 0x37, 0xe4, 0x22, 0xae, 0xb1, 0x35, - 0xca, 0xac, 0xb6, 0x7d, 0xbb, 0xfe, 0x87, 0x7f, 0xfe, 0xeb, 0xcf, 0x13, 0x37, 0xd1, 0xdc, 0x41, - 0xef, 0xc1, 0x41, 0x76, 0xb7, 0xf5, 0x5b, 0x80, 0xfc, 0xce, 0x0a, 0xad, 0x1b, 0x47, 0x75, 0xf1, - 0x26, 0xab, 0x51, 0xde, 0x68, 0xed, 0x2d, 0xc9, 0x69, 0xa1, 0x65, 0x93, 0xf3, 0xe0, 0x77, 0xc4, - 0xff, 0x78, 0xf7, 0xeb, 0x87, 0x95, 0x5d, 0xe4, 0xc2, 0xfc, 0xc0, 0x65, 0x17, 0x32, 0x92, 0x1c, - 0x76, 0x0b, 0x36, 0x2c, 0xc6, 0xa6, 0x8c, 0xb1, 0x6a, 0x0f, 0xe4, 0xfd, 0x30, 0xbb, 0xc4, 0x8a, - 0x61, 0x7e, 0xe0, 0x26, 0xcc, 0x0c, 0x31, 0xec, 0x8a, 0x6c, 0x58, 0x88, 0x0f, 0x64, 0x88, 0x7b, - 0x87, 0xeb, 0x83, 0xd3, 0xd0, 0x4f, 0xfb, 0x6a, 0x3a, 0x59, 0x44, 0x1f, 0xe6, 0x07, 0x6e, 0xbe, - 0xcc, 0x88, 0xc3, 0xae, 0xc4, 0x1a, 0x2b, 0xa5, 0xb6, 0x7a, 0x12, 0xc4, 0xbc, 0x6f, 0xaf, 0xcb, - 0xb0, 0xb7, 0x76, 0x87, 0x55, 0xef, 0xf0, 0xef, 0xd3, 0x30, 0xaf, 0xe4, 0x61, 0xda, 0x0f, 0xbf, - 0x01, 0xc8, 0x35, 0xa3, 0xb9, 0x54, 0x25, 0xe9, 0xdb, 0xd8, 0x18, 0x6e, 0xd4, 0x9d, 0x80, 0x64, - 0xdc, 0x39, 0x04, 0x22, 0xae, 0x56, 0x94, 0xaf, 0xa0, 0x9a, 0x2a, 0x45, 0xb4, 0x36, 0xd0, 0x05, - 0xa6, 0xc0, 0x6a, 0x14, 0xb5, 0x9c, 0xbd, 0x21, 0xb9, 0x56, 0xd0, 0x52, 0xce, 0x65, 0xac, 0xff, - 0x67, 0x50, 0x33, 0xc4, 0x25, 0xda, 0x28, 0xae, 0xfe, 0xf5, 0xdc, 0x6b, 0x92, 0x7b, 0xd9, 0x36, - 0xf2, 0x7c, 0xa8, 0xb5, 0xa3, 0x0f, 0x35, 0x43, 0x78, 0x9a, 0xc4, 0x65, 0x3d, 0x5a, 0x26, 0xbe, - 0x27, 0x89, 0x9b, 0x87, 0xab, 0x66, 0xd2, 0xf2, 0xaf, 0x5e, 0x6b, 0x1d, 0xe5, 0x73, 0xa8, 0x19, - 0x22, 0xd3, 0x8c, 0x52, 0xd6, 0x9e, 0x23, 0x57, 0x59, 0xcf, 0x62, 0xb7, 0x5c, 0x21, 0xe4, 0xc1, - 0x6c, 0x26, 0x4f, 0x51, 0xc3, 0xe8, 0xcb, 0x82, 0x66, 0x2d, 0xcf, 0xe0, 0xbe, 0x24, 0xbd, 0x63, - 0x6f, 0x95, 0x48, 0x0f, 0xb4, 0x4e, 0x3a, 0xb8, 0x4b, 0x71, 0x5b, 0xac, 0x41, 0x0f, 0xe6, 0x4c, - 0x7d, 0x6b, 0x6e, 0x23, 0x43, 0x74, 0x6f, 0x39, 0xd4, 0x8f, 0x64, 0xa8, 0x07, 0xbb, 0x7b, 0xa3, - 0x43, 0x19, 0xbf, 0x94, 0xaf, 0xb3, 0xb8, 0x14, 0x6a, 0x86, 0xfa, 0x44, 0x85, 0x96, 0x1c, 0x94, - 0xd1, 0x8d, 0xcd, 0x11, 0x56, 0xdd, 0xb1, 0x7a, 0xc1, 0xd0, 0x98, 0xe9, 0x3e, 0xae, 0xff, 0x1a, - 0xc5, 0xaf, 0x3b, 0xea, 0x9f, 0x18, 0x07, 0xbd, 0x07, 0x8f, 0xd4, 0x52, 0x4c, 0xcb, 0x3f, 0x3f, - 0xfc, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9c, 0x7b, 0x5d, 0x05, 0x7c, 0x19, 0x00, 0x00, +func file_accounts_proto_rawDescGZIP() []byte { + file_accounts_proto_rawDescOnce.Do(func() { + file_accounts_proto_rawDescData = protoimpl.X.CompressGZIP(file_accounts_proto_rawDescData) + }) + return file_accounts_proto_rawDescData +} + +var file_accounts_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_accounts_proto_goTypes = []interface{}{ + (*ListAccountsRequest)(nil), // 0: settings.ListAccountsRequest + (*ListAccountsResponse)(nil), // 1: settings.ListAccountsResponse + (*GetAccountRequest)(nil), // 2: settings.GetAccountRequest + (*CreateAccountRequest)(nil), // 3: settings.CreateAccountRequest + (*UpdateAccountRequest)(nil), // 4: settings.UpdateAccountRequest + (*DeleteAccountRequest)(nil), // 5: settings.DeleteAccountRequest + (*Account)(nil), // 6: settings.Account + (*Identities)(nil), // 7: settings.Identities + (*PasswordProfile)(nil), // 8: settings.PasswordProfile + (*ListGroupsRequest)(nil), // 9: settings.ListGroupsRequest + (*ListGroupsResponse)(nil), // 10: settings.ListGroupsResponse + (*GetGroupRequest)(nil), // 11: settings.GetGroupRequest + (*CreateGroupRequest)(nil), // 12: settings.CreateGroupRequest + (*UpdateGroupRequest)(nil), // 13: settings.UpdateGroupRequest + (*DeleteGroupRequest)(nil), // 14: settings.DeleteGroupRequest + (*AddMemberRequest)(nil), // 15: settings.AddMemberRequest + (*RemoveMemberRequest)(nil), // 16: settings.RemoveMemberRequest + (*ListMembersRequest)(nil), // 17: settings.ListMembersRequest + (*ListMembersResponse)(nil), // 18: settings.ListMembersResponse + (*Group)(nil), // 19: settings.Group + (*OnPremisesProvisioningError)(nil), // 20: settings.OnPremisesProvisioningError + (*field_mask.FieldMask)(nil), // 21: google.protobuf.FieldMask + (*timestamp.Timestamp)(nil), // 22: google.protobuf.Timestamp + (*empty.Empty)(nil), // 23: google.protobuf.Empty +} +var file_accounts_proto_depIdxs = []int32{ + 21, // 0: settings.ListAccountsRequest.field_mask:type_name -> google.protobuf.FieldMask + 6, // 1: settings.ListAccountsResponse.accounts:type_name -> settings.Account + 6, // 2: settings.CreateAccountRequest.account:type_name -> settings.Account + 6, // 3: settings.UpdateAccountRequest.account:type_name -> settings.Account + 21, // 4: settings.UpdateAccountRequest.update_mask:type_name -> google.protobuf.FieldMask + 7, // 5: settings.Account.identities:type_name -> settings.Identities + 8, // 6: settings.Account.password_profile:type_name -> settings.PasswordProfile + 19, // 7: settings.Account.memberOf:type_name -> settings.Group + 22, // 8: settings.Account.created_date_time:type_name -> google.protobuf.Timestamp + 22, // 9: settings.Account.deleted_date_time:type_name -> google.protobuf.Timestamp + 22, // 10: settings.Account.on_premises_last_sync_date_time:type_name -> google.protobuf.Timestamp + 20, // 11: settings.Account.on_premises_provisioning_errors:type_name -> settings.OnPremisesProvisioningError + 22, // 12: settings.Account.external_user_state_change_date_time:type_name -> google.protobuf.Timestamp + 22, // 13: settings.Account.refresh_tokens_valid_from_date_time:type_name -> google.protobuf.Timestamp + 22, // 14: settings.Account.sign_in_sessions_valid_from_date_time:type_name -> google.protobuf.Timestamp + 22, // 15: settings.PasswordProfile.last_password_change_date_time:type_name -> google.protobuf.Timestamp + 21, // 16: settings.ListGroupsRequest.field_mask:type_name -> google.protobuf.FieldMask + 19, // 17: settings.ListGroupsResponse.groups:type_name -> settings.Group + 19, // 18: settings.CreateGroupRequest.group:type_name -> settings.Group + 19, // 19: settings.UpdateGroupRequest.group:type_name -> settings.Group + 21, // 20: settings.UpdateGroupRequest.update_mask:type_name -> google.protobuf.FieldMask + 21, // 21: settings.ListMembersRequest.field_mask:type_name -> google.protobuf.FieldMask + 6, // 22: settings.ListMembersResponse.members:type_name -> settings.Account + 6, // 23: settings.Group.members:type_name -> settings.Account + 6, // 24: settings.Group.owners:type_name -> settings.Account + 22, // 25: settings.Group.created_date_time:type_name -> google.protobuf.Timestamp + 22, // 26: settings.Group.deleted_date_time:type_name -> google.protobuf.Timestamp + 22, // 27: settings.Group.expiration_date_time:type_name -> google.protobuf.Timestamp + 20, // 28: settings.Group.on_premises_provisioning_errors:type_name -> settings.OnPremisesProvisioningError + 22, // 29: settings.OnPremisesProvisioningError.occurred_date_time:type_name -> google.protobuf.Timestamp + 0, // 30: settings.AccountsService.ListAccounts:input_type -> settings.ListAccountsRequest + 2, // 31: settings.AccountsService.GetAccount:input_type -> settings.GetAccountRequest + 3, // 32: settings.AccountsService.CreateAccount:input_type -> settings.CreateAccountRequest + 4, // 33: settings.AccountsService.UpdateAccount:input_type -> settings.UpdateAccountRequest + 5, // 34: settings.AccountsService.DeleteAccount:input_type -> settings.DeleteAccountRequest + 9, // 35: settings.GroupsService.ListGroups:input_type -> settings.ListGroupsRequest + 11, // 36: settings.GroupsService.GetGroup:input_type -> settings.GetGroupRequest + 12, // 37: settings.GroupsService.CreateGroup:input_type -> settings.CreateGroupRequest + 13, // 38: settings.GroupsService.UpdateGroup:input_type -> settings.UpdateGroupRequest + 14, // 39: settings.GroupsService.DeleteGroup:input_type -> settings.DeleteGroupRequest + 15, // 40: settings.GroupsService.AddMember:input_type -> settings.AddMemberRequest + 16, // 41: settings.GroupsService.RemoveMember:input_type -> settings.RemoveMemberRequest + 17, // 42: settings.GroupsService.ListMembers:input_type -> settings.ListMembersRequest + 1, // 43: settings.AccountsService.ListAccounts:output_type -> settings.ListAccountsResponse + 6, // 44: settings.AccountsService.GetAccount:output_type -> settings.Account + 6, // 45: settings.AccountsService.CreateAccount:output_type -> settings.Account + 6, // 46: settings.AccountsService.UpdateAccount:output_type -> settings.Account + 23, // 47: settings.AccountsService.DeleteAccount:output_type -> google.protobuf.Empty + 10, // 48: settings.GroupsService.ListGroups:output_type -> settings.ListGroupsResponse + 19, // 49: settings.GroupsService.GetGroup:output_type -> settings.Group + 19, // 50: settings.GroupsService.CreateGroup:output_type -> settings.Group + 19, // 51: settings.GroupsService.UpdateGroup:output_type -> settings.Group + 23, // 52: settings.GroupsService.DeleteGroup:output_type -> google.protobuf.Empty + 19, // 53: settings.GroupsService.AddMember:output_type -> settings.Group + 19, // 54: settings.GroupsService.RemoveMember:output_type -> settings.Group + 18, // 55: settings.GroupsService.ListMembers:output_type -> settings.ListMembersResponse + 43, // [43:56] is the sub-list for method output_type + 30, // [30:43] is the sub-list for method input_type + 30, // [30:30] is the sub-list for extension type_name + 30, // [30:30] is the sub-list for extension extendee + 0, // [0:30] is the sub-list for field type_name +} + +func init() { file_accounts_proto_init() } +func file_accounts_proto_init() { + if File_accounts_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_accounts_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAccountsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAccountsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteAccountRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Account); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Identities); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PasswordProfile); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGroupsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListGroupsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteGroupRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddMemberRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveMemberRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListMembersRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListMembersResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Group); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_accounts_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OnPremisesProvisioningError); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_accounts_proto_rawDesc, + NumEnums: 0, + NumMessages: 21, + NumExtensions: 0, + NumServices: 2, + }, + GoTypes: file_accounts_proto_goTypes, + DependencyIndexes: file_accounts_proto_depIdxs, + MessageInfos: file_accounts_proto_msgTypes, + }.Build() + File_accounts_proto = out.File + file_accounts_proto_rawDesc = nil + file_accounts_proto_goTypes = nil + file_accounts_proto_depIdxs = nil } diff --git a/pkg/proto/v0/accounts.pb.micro.go b/pkg/proto/v0/accounts.pb.micro.go index ad9183f931..bc03e6b6b5 100644 --- a/pkg/proto/v0/accounts.pb.micro.go +++ b/pkg/proto/v0/accounts.pb.micro.go @@ -15,6 +15,7 @@ import ( import ( context "context" + api "github.com/micro/go-micro/v2/api" client "github.com/micro/go-micro/v2/client" server "github.com/micro/go-micro/v2/server" ) @@ -31,10 +32,53 @@ var _ = math.Inf const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package // Reference imports to suppress errors if they are not otherwise used. +var _ api.Endpoint var _ context.Context var _ client.Option var _ server.Option +// Api Endpoints for AccountsService service + +func NewAccountsServiceEndpoints() []*api.Endpoint { + return []*api.Endpoint{ + &api.Endpoint{ + Name: "AccountsService.ListAccounts", + Path: []string{"/api/v0/accounts/accounts-list"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.GetAccount", + Path: []string{"/api/v0/accounts/accounts-get"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.CreateAccount", + Path: []string{"/api/v0/accounts/accounts-create"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.UpdateAccount", + Path: []string{"/api/v0/accounts/accounts-update"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "AccountsService.DeleteAccount", + Path: []string{"/api/v0/accounts/accounts-delete"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + }, + } +} + // Client API for AccountsService service type AccountsService interface { @@ -139,6 +183,41 @@ func RegisterAccountsServiceHandler(s server.Server, hdlr AccountsServiceHandler accountsService } h := &accountsServiceHandler{hdlr} + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.ListAccounts", + Path: []string{"/api/v0/accounts/accounts-list"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.GetAccount", + Path: []string{"/api/v0/accounts/accounts-get"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.CreateAccount", + Path: []string{"/api/v0/accounts/accounts-create"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.UpdateAccount", + Path: []string{"/api/v0/accounts/accounts-update"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "AccountsService.DeleteAccount", + Path: []string{"/api/v0/accounts/accounts-delete"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + })) return s.Handle(s.NewHandler(&AccountsService{h}, opts...)) } @@ -166,6 +245,66 @@ func (h *accountsServiceHandler) DeleteAccount(ctx context.Context, in *DeleteAc return h.AccountsServiceHandler.DeleteAccount(ctx, in, out) } +// Api Endpoints for GroupsService service + +func NewGroupsServiceEndpoints() []*api.Endpoint { + return []*api.Endpoint{ + &api.Endpoint{ + Name: "GroupsService.ListGroups", + Path: []string{"/v0/groups"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.GetGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.CreateGroup", + Path: []string{"/v0/groups"}, + Method: []string{"POST"}, + Body: "group", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.UpdateGroup", + Path: []string{"/v0/groups/{group.id=*}"}, + Method: []string{"PATCH"}, + Body: "group", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.DeleteGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.AddMember", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.RemoveMember", + Path: []string{"/v0/groups/{id=*}/members/{account_id}/$ref"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + }, + &api.Endpoint{ + Name: "GroupsService.ListMembers", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"GET"}, + Handler: "rpc", + }, + } +} + // Client API for GroupsService service type GroupsService interface { @@ -315,6 +454,59 @@ func RegisterGroupsServiceHandler(s server.Server, hdlr GroupsServiceHandler, op groupsService } h := &groupsServiceHandler{hdlr} + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.ListGroups", + Path: []string{"/v0/groups"}, + Method: []string{"GET"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.GetGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"GET"}, + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.CreateGroup", + Path: []string{"/v0/groups"}, + Method: []string{"POST"}, + Body: "group", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.UpdateGroup", + Path: []string{"/v0/groups/{group.id=*}"}, + Method: []string{"PATCH"}, + Body: "group", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.DeleteGroup", + Path: []string{"/v0/groups/{id=*}"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.AddMember", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"POST"}, + Body: "*", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.RemoveMember", + Path: []string{"/v0/groups/{id=*}/members/{account_id}/$ref"}, + Method: []string{"DELETE"}, + Body: "", + Handler: "rpc", + })) + opts = append(opts, api.WithEndpoint(&api.Endpoint{ + Name: "GroupsService.ListMembers", + Path: []string{"/v0/groups/{id=*}/members/$ref"}, + Method: []string{"GET"}, + Handler: "rpc", + })) return s.Handle(s.NewHandler(&GroupsService{h}, opts...)) } diff --git a/pkg/proto/v0/accounts.pb.web.go b/pkg/proto/v0/accounts.pb.web.go new file mode 100644 index 0000000000..f0fe5f7fe5 --- /dev/null +++ b/pkg/proto/v0/accounts.pb.web.go @@ -0,0 +1,1129 @@ +// Code generated by protoc-gen-microweb. DO NOT EDIT. +// source: proto.proto + +package proto + +import ( + "bytes" + "encoding/json" + "net/http" + + "github.com/go-chi/chi" + "github.com/go-chi/render" + "github.com/golang/protobuf/jsonpb" + + "github.com/golang/protobuf/ptypes/empty" +) + +type webAccountsServiceHandler struct { + r chi.Router + h AccountsServiceHandler +} + +func (h *webAccountsServiceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + h.r.ServeHTTP(w, r) +} + +func (h *webAccountsServiceHandler) ListAccounts(w http.ResponseWriter, r *http.Request) { + + req := &ListAccountsRequest{} + + resp := &ListAccountsResponse{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.ListAccounts( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) GetAccount(w http.ResponseWriter, r *http.Request) { + + req := &GetAccountRequest{} + + resp := &Account{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.GetAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) CreateAccount(w http.ResponseWriter, r *http.Request) { + + req := &CreateAccountRequest{} + + resp := &Account{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.CreateAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) UpdateAccount(w http.ResponseWriter, r *http.Request) { + + req := &UpdateAccountRequest{} + + resp := &Account{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.UpdateAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webAccountsServiceHandler) DeleteAccount(w http.ResponseWriter, r *http.Request) { + + req := &DeleteAccountRequest{} + resp := &empty.Empty{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.DeleteAccount( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusNoContent) + render.NoContent(w, r) +} + +func RegisterAccountsServiceWeb(r chi.Router, i AccountsServiceHandler, middlewares ...func(http.Handler) http.Handler) { + handler := &webAccountsServiceHandler{ + r: r, + h: i, + } + + r.MethodFunc("POST", "/api/v0/accounts/accounts-list", handler.ListAccounts) + r.MethodFunc("POST", "/api/v0/accounts/accounts-get", handler.GetAccount) + r.MethodFunc("POST", "/api/v0/accounts/accounts-create", handler.CreateAccount) + r.MethodFunc("POST", "/api/v0/accounts/accounts-update", handler.UpdateAccount) + r.MethodFunc("POST", "/api/v0/accounts/accounts-delete", handler.DeleteAccount) +} + +type webGroupsServiceHandler struct { + r chi.Router + h GroupsServiceHandler +} + +func (h *webGroupsServiceHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + h.r.ServeHTTP(w, r) +} + +func (h *webGroupsServiceHandler) ListGroups(w http.ResponseWriter, r *http.Request) { + + req := &ListGroupsRequest{} + + resp := &ListGroupsResponse{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.ListGroups( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) GetGroup(w http.ResponseWriter, r *http.Request) { + + req := &GetGroupRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.GetGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) CreateGroup(w http.ResponseWriter, r *http.Request) { + + req := &CreateGroupRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.CreateGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) UpdateGroup(w http.ResponseWriter, r *http.Request) { + + req := &UpdateGroupRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.UpdateGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) DeleteGroup(w http.ResponseWriter, r *http.Request) { + + req := &DeleteGroupRequest{} + resp := &empty.Empty{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.DeleteGroup( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusNoContent) + render.NoContent(w, r) +} + +func (h *webGroupsServiceHandler) AddMember(w http.ResponseWriter, r *http.Request) { + + req := &AddMemberRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.AddMember( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusCreated) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) RemoveMember(w http.ResponseWriter, r *http.Request) { + + req := &RemoveMemberRequest{} + + resp := &Group{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.RemoveMember( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func (h *webGroupsServiceHandler) ListMembers(w http.ResponseWriter, r *http.Request) { + + req := &ListMembersRequest{} + + resp := &ListMembersResponse{} + + if err := json.NewDecoder(r.Body).Decode(&req); err != nil { + http.Error(w, err.Error(), http.StatusPreconditionFailed) + return + } + + if err := h.h.ListMembers( + r.Context(), + req, + resp, + ); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + render.Status(r, http.StatusOK) + render.JSON(w, r, resp) +} + +func RegisterGroupsServiceWeb(r chi.Router, i GroupsServiceHandler, middlewares ...func(http.Handler) http.Handler) { + handler := &webGroupsServiceHandler{ + r: r, + h: i, + } + + r.MethodFunc("GET", "/v0/groups", handler.ListGroups) + r.MethodFunc("GET", "/v0/groups/{id=*}", handler.GetGroup) + r.MethodFunc("POST", "/v0/groups", handler.CreateGroup) + r.MethodFunc("PATCH", "/v0/groups/{group.id=*}", handler.UpdateGroup) + r.MethodFunc("DELETE", "/v0/groups/{id=*}", handler.DeleteGroup) + r.MethodFunc("POST", "/v0/groups/{id=*}/members/$ref", handler.AddMember) + r.MethodFunc("DELETE", "/v0/groups/{id=*}/members/{account_id}/$ref", handler.RemoveMember) + r.MethodFunc("GET", "/v0/groups/{id=*}/members/$ref", handler.ListMembers) +} + +// ListAccountsRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListAccountsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListAccountsRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListAccountsRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListAccountsRequest)(nil) + +// ListAccountsRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListAccountsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListAccountsRequest) UnmarshalJSON(b []byte) error { + return ListAccountsRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListAccountsRequest)(nil) + +// ListAccountsResponseJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListAccountsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsResponseJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListAccountsResponse) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListAccountsResponseJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListAccountsResponse)(nil) + +// ListAccountsResponseJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListAccountsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListAccountsResponseJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListAccountsResponse) UnmarshalJSON(b []byte) error { + return ListAccountsResponseJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListAccountsResponse)(nil) + +// GetAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of GetAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *GetAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := GetAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*GetAccountRequest)(nil) + +// GetAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of GetAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *GetAccountRequest) UnmarshalJSON(b []byte) error { + return GetAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*GetAccountRequest)(nil) + +// CreateAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of CreateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *CreateAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := CreateAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*CreateAccountRequest)(nil) + +// CreateAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of CreateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *CreateAccountRequest) UnmarshalJSON(b []byte) error { + return CreateAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*CreateAccountRequest)(nil) + +// UpdateAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of UpdateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *UpdateAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := UpdateAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*UpdateAccountRequest)(nil) + +// UpdateAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of UpdateAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *UpdateAccountRequest) UnmarshalJSON(b []byte) error { + return UpdateAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*UpdateAccountRequest)(nil) + +// DeleteAccountRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of DeleteAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteAccountRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *DeleteAccountRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := DeleteAccountRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*DeleteAccountRequest)(nil) + +// DeleteAccountRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of DeleteAccountRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteAccountRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *DeleteAccountRequest) UnmarshalJSON(b []byte) error { + return DeleteAccountRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*DeleteAccountRequest)(nil) + +// AccountJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of Account. This struct is safe to replace or modify but +// should not be done so concurrently. +var AccountJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *Account) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := AccountJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*Account)(nil) + +// AccountJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of Account. This struct is safe to replace or modify but +// should not be done so concurrently. +var AccountJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *Account) UnmarshalJSON(b []byte) error { + return AccountJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*Account)(nil) + +// IdentitiesJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of Identities. This struct is safe to replace or modify but +// should not be done so concurrently. +var IdentitiesJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *Identities) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := IdentitiesJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*Identities)(nil) + +// IdentitiesJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of Identities. This struct is safe to replace or modify but +// should not be done so concurrently. +var IdentitiesJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *Identities) UnmarshalJSON(b []byte) error { + return IdentitiesJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*Identities)(nil) + +// PasswordProfileJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of PasswordProfile. This struct is safe to replace or modify but +// should not be done so concurrently. +var PasswordProfileJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *PasswordProfile) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := PasswordProfileJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*PasswordProfile)(nil) + +// PasswordProfileJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of PasswordProfile. This struct is safe to replace or modify but +// should not be done so concurrently. +var PasswordProfileJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *PasswordProfile) UnmarshalJSON(b []byte) error { + return PasswordProfileJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*PasswordProfile)(nil) + +// ListGroupsRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListGroupsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListGroupsRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListGroupsRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListGroupsRequest)(nil) + +// ListGroupsRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListGroupsRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListGroupsRequest) UnmarshalJSON(b []byte) error { + return ListGroupsRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListGroupsRequest)(nil) + +// ListGroupsResponseJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListGroupsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsResponseJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListGroupsResponse) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListGroupsResponseJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListGroupsResponse)(nil) + +// ListGroupsResponseJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListGroupsResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListGroupsResponseJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListGroupsResponse) UnmarshalJSON(b []byte) error { + return ListGroupsResponseJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListGroupsResponse)(nil) + +// GetGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of GetGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *GetGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := GetGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*GetGroupRequest)(nil) + +// GetGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of GetGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var GetGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *GetGroupRequest) UnmarshalJSON(b []byte) error { + return GetGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*GetGroupRequest)(nil) + +// CreateGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of CreateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *CreateGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := CreateGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*CreateGroupRequest)(nil) + +// CreateGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of CreateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var CreateGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *CreateGroupRequest) UnmarshalJSON(b []byte) error { + return CreateGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*CreateGroupRequest)(nil) + +// UpdateGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of UpdateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *UpdateGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := UpdateGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*UpdateGroupRequest)(nil) + +// UpdateGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of UpdateGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var UpdateGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *UpdateGroupRequest) UnmarshalJSON(b []byte) error { + return UpdateGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*UpdateGroupRequest)(nil) + +// DeleteGroupRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of DeleteGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteGroupRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *DeleteGroupRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := DeleteGroupRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*DeleteGroupRequest)(nil) + +// DeleteGroupRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of DeleteGroupRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var DeleteGroupRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *DeleteGroupRequest) UnmarshalJSON(b []byte) error { + return DeleteGroupRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*DeleteGroupRequest)(nil) + +// AddMemberRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of AddMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var AddMemberRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *AddMemberRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := AddMemberRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*AddMemberRequest)(nil) + +// AddMemberRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of AddMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var AddMemberRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *AddMemberRequest) UnmarshalJSON(b []byte) error { + return AddMemberRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*AddMemberRequest)(nil) + +// RemoveMemberRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of RemoveMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var RemoveMemberRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *RemoveMemberRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := RemoveMemberRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*RemoveMemberRequest)(nil) + +// RemoveMemberRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of RemoveMemberRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var RemoveMemberRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *RemoveMemberRequest) UnmarshalJSON(b []byte) error { + return RemoveMemberRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*RemoveMemberRequest)(nil) + +// ListMembersRequestJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListMembersRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersRequestJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListMembersRequest) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListMembersRequestJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListMembersRequest)(nil) + +// ListMembersRequestJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListMembersRequest. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersRequestJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListMembersRequest) UnmarshalJSON(b []byte) error { + return ListMembersRequestJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListMembersRequest)(nil) + +// ListMembersResponseJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of ListMembersResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersResponseJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *ListMembersResponse) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := ListMembersResponseJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*ListMembersResponse)(nil) + +// ListMembersResponseJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of ListMembersResponse. This struct is safe to replace or modify but +// should not be done so concurrently. +var ListMembersResponseJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *ListMembersResponse) UnmarshalJSON(b []byte) error { + return ListMembersResponseJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*ListMembersResponse)(nil) + +// GroupJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of Group. This struct is safe to replace or modify but +// should not be done so concurrently. +var GroupJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *Group) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := GroupJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*Group)(nil) + +// GroupJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of Group. This struct is safe to replace or modify but +// should not be done so concurrently. +var GroupJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *Group) UnmarshalJSON(b []byte) error { + return GroupJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*Group)(nil) + +// OnPremisesProvisioningErrorJSONMarshaler describes the default jsonpb.Marshaler used by all +// instances of OnPremisesProvisioningError. This struct is safe to replace or modify but +// should not be done so concurrently. +var OnPremisesProvisioningErrorJSONMarshaler = new(jsonpb.Marshaler) + +// MarshalJSON satisfies the encoding/json Marshaler interface. This method +// uses the more correct jsonpb package to correctly marshal the message. +func (m *OnPremisesProvisioningError) MarshalJSON() ([]byte, error) { + if m == nil { + return json.Marshal(nil) + } + + buf := &bytes.Buffer{} + + if err := OnPremisesProvisioningErrorJSONMarshaler.Marshal(buf, m); err != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +var _ json.Marshaler = (*OnPremisesProvisioningError)(nil) + +// OnPremisesProvisioningErrorJSONUnmarshaler describes the default jsonpb.Unmarshaler used by all +// instances of OnPremisesProvisioningError. This struct is safe to replace or modify but +// should not be done so concurrently. +var OnPremisesProvisioningErrorJSONUnmarshaler = new(jsonpb.Unmarshaler) + +// UnmarshalJSON satisfies the encoding/json Unmarshaler interface. This method +// uses the more correct jsonpb package to correctly unmarshal the message. +func (m *OnPremisesProvisioningError) UnmarshalJSON(b []byte) error { + return OnPremisesProvisioningErrorJSONUnmarshaler.Unmarshal(bytes.NewReader(b), m) +} + +var _ json.Unmarshaler = (*OnPremisesProvisioningError)(nil) diff --git a/pkg/proto/v0/accounts.proto b/pkg/proto/v0/accounts.proto index f2ba6b4757..eca6435b72 100644 --- a/pkg/proto/v0/accounts.proto +++ b/pkg/proto/v0/accounts.proto @@ -18,13 +18,14 @@ service AccountsService { rpc ListAccounts(ListAccountsRequest) returns (ListAccountsResponse) { // List method maps to HTTP GET option (google.api.http) = { - get: "/v0/accounts" + post: "/api/v0/accounts/accounts-list", + body: "*" }; } // Gets an account rpc GetAccount(GetAccountRequest) returns (Account) { option (google.api.http) = { - get: "/v0/accounts/{id=*}" + post: "/api/v0/accounts/accounts-get", body: "*" }; } @@ -33,8 +34,8 @@ service AccountsService { // Create maps to HTTP POST. URL path as the collection name. // HTTP request body contains the resource option (google.api.http) = { - post: "/v0/accounts" - body: "account" + post: "/api/v0/accounts/accounts-create" + body: "*" }; } // Updates an account @@ -42,8 +43,8 @@ service AccountsService { // Update maps to HTTP PATCH. Resource name is mapped to a URL path. // Resource is contained in the HTTP request body option (google.api.http) = { - patch: "/v0/accounts/{account.id=*}" - body: "account" + post: "/api/v0/accounts/accounts-update" + body: "*" }; }; // Deletes an account @@ -51,7 +52,8 @@ service AccountsService { // Delete maps to HTTP DELETE. Resource name maps to the URL path. // There is no request body option (google.api.http) = { - delete: "/v0/accounts/{id=*}" + post: "/api/v0/accounts/accounts-delete", + body: "*" }; } } @@ -68,7 +70,6 @@ service GroupsService { rpc GetGroup(GetGroupRequest) returns (Group) { option (google.api.http) = { get: "/v0/groups/{id=*}" - body: "*" }; } // Creates a group @@ -115,8 +116,7 @@ service GroupsService { rpc RemoveMember(RemoveMemberRequest) returns (Group) { // All request parameters go into body. option (google.api.http) = { - delete: "/v0/groups/{id=*}/members/{account.id}/$ref" - body: "*" + delete: "/v0/groups/{id=*}/members/{account_id}/$ref" }; } // group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 @@ -476,9 +476,11 @@ message AddMemberRequest { } message RemoveMemberRequest { - // The account id to remove - // TODO id in the body indt in the url? not necessary ... use empty? + // The group id string id = 1; + + // The account id to remove + string account_id = 2; } message ListMembersRequest { @@ -511,6 +513,9 @@ message ListMembersRequest { // * Query `display_name=\\"Test String\\"` returns groups with // display names that include both "Test" and "String" string query = 4 [(google.api.field_behavior) = OPTIONAL]; + + // The group id + string id = 5; } message ListMembersResponse { @@ -638,4 +643,4 @@ message OnPremisesProvisioningError { string property_causing_error = 3; // Value of the property causing the error. string value = 4; -} \ No newline at end of file +} diff --git a/pkg/proto/v0/accounts.swagger.json b/pkg/proto/v0/accounts.swagger.json new file mode 100644 index 0000000000..1e407c0f6f --- /dev/null +++ b/pkg/proto/v0/accounts.swagger.json @@ -0,0 +1,988 @@ +{ + "swagger": "2.0", + "info": { + "title": "accounts.proto", + "version": "version not set" + }, + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/api/v0/accounts/accounts-create": { + "post": { + "summary": "Creates an account", + "operationId": "AccountsService_CreateAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsCreateAccountRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/api/v0/accounts/accounts-delete": { + "post": { + "summary": "Deletes an account", + "operationId": "AccountsService_DeleteAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsDeleteAccountRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/api/v0/accounts/accounts-get": { + "post": { + "summary": "Gets an account", + "operationId": "AccountsService_GetAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsGetAccountRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/api/v0/accounts/accounts-list": { + "post": { + "summary": "Lists accounts", + "operationId": "AccountsService_ListAccounts", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListAccountsResponse" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsListAccountsRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/api/v0/accounts/accounts-update": { + "post": { + "summary": "Updates an account", + "operationId": "AccountsService_UpdateAccount", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsAccount" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsUpdateAccountRequest" + } + } + ], + "tags": [ + "AccountsService" + ] + } + }, + "/v0/groups": { + "get": { + "summary": "Lists groups", + "operationId": "GroupsService_ListGroups", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListGroupsResponse" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "page_size", + "description": "Optional. The maximum number of groups to return in the response.", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page_token", + "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "field_mask.paths", + "description": "The set of field mask paths.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "query", + "description": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + }, + "post": { + "summary": "Creates a group", + "operationId": "GroupsService_CreateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "body", + "description": "The account resource to create", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsGroup" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{group.id}": { + "patch": { + "summary": "Updates a group", + "operationId": "GroupsService_UpdateGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "group.id", + "description": "The unique identifier for the group.\nReturned by default. Inherited from directoryObject. Key. Not nullable. Read-only.", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "description": "The group resource which replaces the resource on the server", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsGroup" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{id}": { + "get": { + "summary": "Gets an groups", + "operationId": "GroupsService_GetGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + }, + "delete": { + "summary": "Deletes a group", + "operationId": "GroupsService_DeleteGroup", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "properties": {} + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{id}/members/$ref": { + "get": { + "summary": "group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0", + "operationId": "GroupsService_ListMembers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsListMembersResponse" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "The group id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "page_size", + "in": "query", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "page_token", + "description": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "field_mask.paths", + "description": "The set of field mask paths.", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + }, + { + "name": "query", + "description": "Optional. Search criteria used to select the groups to return.\nIf no search criteria is specified then all groups will be\nreturned. TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `display_name=\\\\\"Test String\\\\\"` returns groups with\ndisplay names that include both \"Test\" and \"String\"", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + }, + "post": { + "summary": "group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0\u0026tabs=http", + "operationId": "GroupsService_AddMember", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "The account id to add", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/settingsAddMemberRequest" + } + } + ], + "tags": [ + "GroupsService" + ] + } + }, + "/v0/groups/{id}/members/{account_id}/$ref": { + "delete": { + "summary": "group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0", + "operationId": "GroupsService_RemoveMember", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/settingsGroup" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "parameters": [ + { + "name": "id", + "description": "The group id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "account_id", + "description": "The account id to remove", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "GroupsService" + ] + } + } + }, + "definitions": { + "protobufAny": { + "type": "object", + "properties": { + "type_url": { + "type": "string" + }, + "value": { + "type": "string", + "format": "byte" + } + } + }, + "protobufFieldMask": { + "type": "object", + "properties": { + "paths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The set of field mask paths." + } + }, + "description": "paths: \"f.a\"\n paths: \"f.b.d\"\n\nHere `f` represents a field in some root message, `a` and `b`\nfields in the message found in `f`, and `d` a field found in the\nmessage in `f.b`.\n\nField masks are used to specify a subset of fields that should be\nreturned by a get operation or modified by an update operation.\nField masks also have a custom JSON encoding (see below).\n\n# Field Masks in Projections\n\nWhen used in the context of a projection, a response message or\nsub-message is filtered by the API to only contain those fields as\nspecified in the mask. For example, if the mask in the previous\nexample is applied to a response message as follows:\n\n f {\n a : 22\n b {\n d : 1\n x : 2\n }\n y : 13\n }\n z: 8\n\nThe result will not contain specific values for fields x,y and z\n(their value will be set to the default, and omitted in proto text\noutput):\n\n\n f {\n a : 22\n b {\n d : 1\n }\n }\n\nA repeated field is not allowed except at the last position of a\npaths string.\n\nIf a FieldMask object is not present in a get operation, the\noperation applies to all fields (as if a FieldMask of all fields\nhad been specified).\n\nNote that a field mask does not necessarily apply to the\ntop-level response message. In case of a REST get operation, the\nfield mask applies directly to the response, but in case of a REST\nlist operation, the mask instead applies to each individual message\nin the returned resource list. In case of a REST custom method,\nother definitions may be used. Where the mask applies will be\nclearly documented together with its declaration in the API. In\nany case, the effect on the returned resource/resources is required\nbehavior for APIs.\n\n# Field Masks in Update Operations\n\nA field mask in update operations specifies which fields of the\ntargeted resource are going to be updated. The API is required\nto only change the values of the fields as specified in the mask\nand leave the others untouched. If a resource is passed in to\ndescribe the updated values, the API ignores the values of all\nfields not covered by the mask.\n\nIf a repeated field is specified for an update operation, new values will\nbe appended to the existing repeated field in the target resource. Note that\na repeated field is only allowed in the last position of a `paths` string.\n\nIf a sub-message is specified in the last position of the field mask for an\nupdate operation, then new value will be merged into the existing sub-message\nin the target resource.\n\nFor example, given the target message:\n\n f {\n b {\n d: 1\n x: 2\n }\n c: [1]\n }\n\nAnd an update message:\n\n f {\n b {\n d: 10\n }\n c: [2]\n }\n\nthen if the field mask is:\n\n paths: [\"f.b\", \"f.c\"]\n\nthen the result will be:\n\n f {\n b {\n d: 10\n x: 2\n }\n c: [1, 2]\n }\n\nAn implementation may provide options to override this default behavior for\nrepeated and message fields.\n\nIn order to reset a field's value to the default, the field must\nbe in the mask and set to the default value in the provided resource.\nHence, in order to reset all fields of a resource, provide a default\ninstance of the resource and set all fields in the mask, or do\nnot provide a mask as described below.\n\nIf a field mask is not present on update, the operation applies to\nall fields (as if a field mask of all fields has been specified).\nNote that in the presence of schema evolution, this may mean that\nfields the client does not know and has therefore not filled into\nthe request will be reset to their default. If this is unwanted\nbehavior, a specific service may require a client to always specify\na field mask, producing an error if not.\n\nAs with get operations, the location of the resource which\ndescribes the updated values in the request message depends on the\noperation kind. In any case, the effect of the field mask is\nrequired to be honored by the API.\n\n## Considerations for HTTP REST\n\nThe HTTP kind of an update operation which uses a field mask must\nbe set to PATCH instead of PUT in order to satisfy HTTP semantics\n(PUT must only be used for full updates).\n\n# JSON Encoding of Field Masks\n\nIn JSON, a field mask is encoded as a single string where paths are\nseparated by a comma. Fields name in each path are converted\nto/from lower-camel naming conventions.\n\nAs an example, consider the following message declarations:\n\n message Profile {\n User user = 1;\n Photo photo = 2;\n }\n message User {\n string display_name = 1;\n string address = 2;\n }\n\nIn proto a field mask for `Profile` may look as such:\n\n mask {\n paths: \"user.display_name\"\n paths: \"photo\"\n }\n\nIn JSON, the same mask is represented as below:\n\n {\n mask: \"user.displayName,photo\"\n }\n\n# Field Masks and Oneof Fields\n\nField masks treat fields in oneofs just as regular fields. Consider the\nfollowing message:\n\n message SampleMessage {\n oneof test_oneof {\n string name = 4;\n SubMessage sub_message = 9;\n }\n }\n\nThe field mask can be:\n\n mask {\n paths: \"name\"\n }\n\nOr:\n\n mask {\n paths: \"sub_message\"\n }\n\nNote that oneof type names (\"test_oneof\" in this case) cannot be used in\npaths.\n\n## Field Mask Verification\n\nThe implementation of any API method which has a FieldMask type field in the\nrequest should verify the included field paths, and return an\n`INVALID_ARGUMENT` error if any path is unmappable.", + "title": "`FieldMask` represents a set of symbolic field paths, for example:" + }, + "runtimeError": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "settingsAccount": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier for the user. Key. Not nullable. Non reassignable. Read-only." + }, + "account_enabled": { + "type": "boolean", + "format": "boolean", + "description": "*true* if the account is enabled; otherwise, *false*. This property is required when a user is created. Supports $filter." + }, + "is_resource_account": { + "type": "boolean", + "format": "boolean", + "description": "A resource account is also known as a /disabled user object/ in Azure AD, and can be used to represent resources in general.\nIn Exchange it might be used to represent conference rooms, for example, and allow them to have a phone number.\nYou could give printers or machines with a sync client resource accounts as well.\nA resource account can be homed in Microsoft 365 or on premises using Skype for Business Server 2019.\n*true* if the user is a resource account; otherwise, *false*. Null value should be considered false." + }, + "creation_type": { + "type": "string", + "description": "Indicates whether the account was created as\n- a regular school or work account (\"\" / emptystring),\n- a local account, fully managed by ocis (LocalAccount), includes synced accounts or\n- an external account (Invitation),\n- self-service sign-up using email verification (EmailVerified). Read-only." + }, + "identities": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsIdentities" + }, + "description": "Represents the identities that can be used to sign in to this account.\nAn identity can be provided by OCIS (also known as a local account), by organizations, or by social identity providers such as Facebook, Google, and Microsoft, and is tied to an account.\nMay contain multiple items with the same signInType value. Supports $filter." + }, + "display_name": { + "type": "string", + "title": "The name displayed in the address book for the account.\nThis is usually the combination of the user's first name, middle initial and last name.\nThis property is required when a user is created and it cannot be cleared during updates.\nSupports $filter and $orderby.\nposixaccount MUST cn" + }, + "preferred_name": { + "type": "string", + "title": "The username\nposixaccount MUST uid" + }, + "uid_number": { + "type": "string", + "format": "int64", + "title": "TODO rename to on_premise_? or move to extension? see https://docs.microsoft.com/en-us/graph/extensibility-open-users\nused for exposing the user using ldap\nposixaccount MUST uidnumber" + }, + "gid_number": { + "type": "string", + "format": "int64", + "title": "used for exposing the user using ldap\nposixaccount MUST gidnumber" + }, + "mail": { + "type": "string", + "title": "The SMTP address for the user, for example, \"jeff@contoso.onmicrosoft.com\". Read-Only. Supports $filter.\ninetorgperson MAY mail" + }, + "description": { + "type": "string", + "title": "A description, useful for resource accounts\nposixaccount MAY description" + }, + "password_profile": { + "$ref": "#/definitions/settingsPasswordProfile", + "title": "Specifies the password profile for the user.\nThe profile contains the user’s password. This property is required when a user is created.\nThe password in the profile must satisfy minimum requirements as specified by the passwordPolicies property.\nBy default, a strong password is required.\nposixaccount MAY authPassword" + }, + "memberOf": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsGroup" + }, + "title": "The groups, directory roles and administrative units that the user is a member of. Read-only. Nullable.\nshould we only respond with repeated strings of ids? no clients should a proper filter mask!" + }, + "created_date_time": { + "type": "string", + "format": "date-time", + "description": "The created date of the account object." + }, + "deleted_date_time": { + "type": "string", + "format": "date-time", + "description": "The date and time the user was deleted. Returned only on $select." + }, + "on_premises_sync_enabled": { + "type": "boolean", + "format": "boolean", + "title": "*true* if this object is synced from an on-premises directory;\n*false* if this object was originally synced from an on-premises directory but is no longer synced;\nnull if this object has never been synced from an on-premises directory (default). Read-only" + }, + "on_premises_immutable_id": { + "type": "string", + "description": "This property is used to associate an on-premises LDAP user to the ocis account object.\nThis property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property.\nImportant: The $ and _ characters cannot be used when specifying this property. Supports $filter." + }, + "on_premises_security_identifier": { + "type": "string", + "description": "Contains the on-premises security identifier (SID) for the user that was synchronized from on-premises to the cloud. Read-only." + }, + "on_premises_distinguished_name": { + "type": "string", + "description": "Contains the on-premises LDAP `distinguished name` or `DN`.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_sam_account_name": { + "type": "string", + "description": "Contains the on-premises `samAccountName` synchronized from the on-premises directory.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_domain_name": { + "type": "string", + "description": "Contains the on-premises `domainFQDN`, also called `dnsDomainName` synchronized from the on-premises directory\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_user_principal_name": { + "type": "string", + "description": "Contains the on-premises userPrincipalName synchronized from the on-premises directory.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_last_sync_date_time": { + "type": "string", + "format": "date-time", + "description": "Indicates the last time at which the object was synced with the on-premises directory; Read-only." + }, + "on_premises_provisioning_errors": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsOnPremisesProvisioningError" + }, + "description": "Errors when using synchronization during provisioning." + }, + "external_user_state": { + "type": "string", + "description": "For an external user invited to the tenant using the invitation API, this property represents the invited user's invitation status.\nFor invited users, the state can be `PendingAcceptance` or `Accepted`, or \"\" / emptystring for all other users.\nReturned only on $select. Supports $filter with the supported values. For example: $filter=externalUserState eq 'PendingAcceptance'." + }, + "external_user_state_change_date_time": { + "type": "string", + "format": "date-time", + "description": "Shows the timestamp for the latest change to the externalUserState property. Returned only on $select." + }, + "refresh_tokens_valid_from_date_time": { + "type": "string", + "format": "date-time", + "description": "Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get\nan error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph).\nIf this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint.\nReturned only on $select. Read-only. Use invalidateAllRefreshTokens to reset." + }, + "sign_in_sessions_valid_from_date_time": { + "type": "string", + "format": "date-time", + "description": "Any refresh tokens or sessions tokens (session cookies) issued before this time are invalid, and applications will get\nan error when using an invalid refresh or sessions token to acquire a delegated access token (to access APIs such as Microsoft Graph).\nIf this happens, the application will need to acquire a new refresh token by making a request to the authorize endpoint.\nRead-only. Use revokeSignInSessions to reset." + } + }, + "title": "Account follows the properties of the ms graph api user resuorce.\nSee https://docs.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties" + }, + "settingsAddMemberRequest": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "The account id to add" + } + } + }, + "settingsCreateAccountRequest": { + "type": "object", + "properties": { + "account": { + "$ref": "#/definitions/settingsAccount", + "title": "The account resource to create" + } + } + }, + "settingsDeleteAccountRequest": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "settingsGetAccountRequest": { + "type": "object", + "properties": { + "id": { + "type": "string" + } + } + }, + "settingsGroup": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The unique identifier for the group.\nReturned by default. Inherited from directoryObject. Key. Not nullable. Read-only." + }, + "display_name": { + "type": "string", + "title": "The display name for the group. This property is required when a group is created and cannot be cleared during updates.\nReturned by default. Supports $filter and $orderby.\ngroupofnames MUST cn" + }, + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "Users, contacts, and groups that are members of this group. HTTP Methods: GET (supported for all groups), POST (supported for security groups and mail-enabled security groups), DELETE (supported only for security groups) Read-only. Nullable.\nTODO accounts (users) only for now, we can add groups with the dedicated message using oneof construct later" + }, + "owners": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "groupofnames MAY businessCategory\ngroupofnames MAY o\ngroupofnames MAY ou\ngroupofnames MAY owner, SINGLE-VALUE but there might be multiple owners" + }, + "description": { + "type": "string", + "title": "An optional description for the group. Returned by default.\ngroupofnames MAY description" + }, + "gid_number": { + "type": "string", + "format": "int64", + "title": "used for exposing the user using ldap\nposixgroup MUST gidnumber" + }, + "created_date_time": { + "type": "string", + "format": "date-time", + "description": "Timestamp of when the group was created. The value cannot be modified and is automatically populated when the group is created\nReturned by default. Read-only." + }, + "deleted_date_time": { + "type": "string", + "format": "date-time", + "description": "For some Azure Active Directory objects (user, group, application), if the object is deleted, it is first logically deleted, and this property is updated with the date and time when the object was deleted. Otherwise this property is null. If the object is restored, this property is updated to null.\nReturned by default. Read-only." + }, + "expiration_date_time": { + "type": "string", + "format": "date-time", + "description": "Timestamp of when the group is set to expire. The value cannot be modified and is automatically populated when the group is created.\nReturned by default. Read-only." + }, + "hide_from_address_lists": { + "type": "boolean", + "format": "boolean", + "description": "True if the group is not displayed in certain parts of the Outlook user interface:\nin the Address Book, in address lists for selecting message recipients, and in the Browse Groups dialog for searching groups; false otherwise. Default value is false.\nReturned only on $select." + }, + "visibility": { + "type": "string", + "description": "Specifies the visibility of an Office 365 group. Possible values are: Private, Public, or Hiddenmembership; blank values are treated as public. See group visibility options to learn more.\nVisibility can be set only when a group is created; it is not editable.\nReturned by default." + }, + "on_premises_sync_enabled": { + "type": "boolean", + "format": "boolean", + "description": "*true* if this group is synced from an on-premises directory;\n*false* if this group was originally synced from an on-premises directory but is no longer synced;\nnull if this object has never been synced from an on-premises directory (default).\nReturned by default. Read-only. Supports $filter." + }, + "on_premises_immutable_id": { + "type": "string", + "description": "This property is used to associate an on-premises LDAP user to the ocis account object.\nThis property must be specified when creating a new user account in the Graph if you are using a federated domain for the user’s userPrincipalName (UPN) property.\nImportant: The $ and _ characters cannot be used when specifying this property. Supports $filter." + }, + "on_premises_security_identifier": { + "type": "string", + "description": "Contains the on-premises security identifier (SID) for the group that was synchronized from on-premises to the cloud. Returned by default. Read-only." + }, + "on_premises_distinguished_name": { + "type": "string", + "description": "Contains the on-premises LDAP `distinguished name` or `DN`.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Read-only." + }, + "on_premises_sam_account_name": { + "type": "string", + "description": "Contains the on-premises `samAccountName` synchronized from the on-premises directory.\nThe property is only populated for customers who are synchronizing their on-premises directory to ocis-accounts. Returned by default. Read-only." + }, + "on_premises_domain_name": { + "type": "string", + "description": "Contains the on-premises domain FQDN, also called dnsDomainName synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect.\nReturned by default. Read-only." + }, + "on_premises_net_bios_name": { + "type": "string", + "description": "Contains the on-premises netBios name synchronized from the on-premises directory. The property is only populated for customers who are synchronizing their on-premises directory to Azure Active Directory via Azure AD Connect.\nReturned by default. Read-only." + }, + "on_premises_last_sync_date_time": { + "type": "string", + "description": "Indicates the last time at which the group was synced with the on-premises directory.\nReturned by default. Read-only. Supports $filter." + }, + "on_premises_provisioning_errors": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsOnPremisesProvisioningError" + }, + "description": "Errors when using synchronization during provisioning." + } + } + }, + "settingsIdentities": { + "type": "object", + "properties": { + "sign_in_type": { + "type": "string", + "description": "Specifies the user sign-in types in your directory, such as `emailAddress`, `userName` or `federated`.\nHere, federated represents a unique identifier for a user from an issuer, that can be in any format chosen by the issuer.\nAdditional validation is enforced on *issuer_assigned_id* when the sign-in type is set to `emailAddress` or `userName`.\nThis property can also be set to any custom string." + }, + "issuer": { + "type": "string", + "description": "Specifies the issuer of the identity, for example facebook.com.\nFor local accounts (where signInType is not federated), this property is\nthe local B2C tenant default domain name, for example contoso.onmicrosoft.com.\nFor external users from other Azure AD organization, this will be the domain of\nthe federated organization, for example contoso.com.\nSupports $filter. 512 character limit." + }, + "issuer_assigned_id": { + "type": "string", + "description": "Specifies the unique identifier assigned to the user by the issuer. The combination of *issuer* and *issuerAssignedId* must be unique within the organization. Represents the sign-in name for the user, when signInType is set to emailAddress or userName (also known as local accounts).\nWhen *signInType* is set to:\n* `emailAddress`, (or starts with `emailAddress` like `emailAddress1`) *issuerAssignedId* must be a valid email address\n* `userName`, issuer_assigned_id must be a valid local part of an email address\nSupports $filter. 512 character limit." + } + }, + "description": "Identities Represents an identity used to sign in to a user account.\nAn identity can be provided by ocis, by organizations, or by social identity providers such as Facebook, Google, or Microsoft, that are tied to a user account.\nThis enables the user to sign in to the user account with any of those associated identities.\nThey are also used to keep a history of old usernames." + }, + "settingsListAccountsRequest": { + "type": "object", + "properties": { + "page_size": { + "type": "integer", + "format": "int32", + "title": "Optional. The maximum number of accounts to return in the response" + }, + "page_token": { + "type": "string", + "title": "Optional. A pagination token returned from a previous call to `Get`\nthat indicates from where search should continue" + }, + "field_mask": { + "$ref": "#/definitions/protobufFieldMask", + "description": "Optional. Used to specify a subset of fields that should be\nreturned by a get operation or modified by an update operation." + }, + "query": { + "type": "string", + "description": "TODO update query language\nQuery expressions can be used to restrict results based upon\nthe account properties where the operators `=`, `NOT`, `AND` and `OR`\ncan be used along with the suffix wildcard symbol `*`.\n\nThe string properties in a query expression should use escaped quotes\nfor values that include whitespace to prevent unexpected behavior.\n\nSome example queries are:\n\n* Query `display_name=Th*` returns accounts whose display_name\nstarts with \"Th\"\n* Query `email=foo@example.com` returns accounts with\n`email` set to `foo@example.com`\n* Query `display_name=\\\\\"Test String\\\\\"` returns accounts with\ndisplay names that include both \"Test\" and \"String\"", + "title": "Optional. Search criteria used to select the accounts to return.\nIf no search criteria is specified then all accounts will be\nreturned" + } + } + }, + "settingsListAccountsResponse": { + "type": "object", + "properties": { + "accounts": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "The field name should match the noun \"accounts\" in the method name. There\nwill be a maximum number of items returned based on the page_size field\nin the request" + }, + "next_page_token": { + "type": "string", + "title": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list" + } + } + }, + "settingsListGroupsResponse": { + "type": "object", + "properties": { + "groups": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsGroup" + }, + "title": "The field name should match the noun \"group\" in the method name. There\nwill be a maximum number of items returned based on the page_size field\nin the request" + }, + "next_page_token": { + "type": "string", + "title": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list" + } + } + }, + "settingsListMembersResponse": { + "type": "object", + "properties": { + "members": { + "type": "array", + "items": { + "$ref": "#/definitions/settingsAccount" + }, + "title": "The field name should match the noun \"members\" in the method name. There\nwill be a maximum number of items returned based on the page_size field\nin the request" + }, + "next_page_token": { + "type": "string", + "title": "Token to retrieve the next page of results, or empty if there are no\nmore results in the list" + } + } + }, + "settingsOnPremisesProvisioningError": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "Category of the provisioning error. Note: Currently, there is only one possible value. Possible value: PropertyConflict - indicates a property value is not unique. Other objects contain the same value for the property." + }, + "occurred_date_time": { + "type": "string", + "format": "date-time", + "description": "The date and time at which the error occurred." + }, + "property_causing_error": { + "type": "string", + "title": "Name of the directory property causing the error. Current possible values: UserPrincipalName or ProxyAddress" + }, + "value": { + "type": "string", + "description": "Value of the property causing the error." + } + } + }, + "settingsPasswordProfile": { + "type": "object", + "properties": { + "password": { + "type": "string", + "description": "The password for the user. This property is required when a user is created.\nIt can be updated, but the user will be required to change the password on the next login.\nThe password must satisfy minimum requirements as specified by the user’s passwordPolicies property. By default, a strong password is required." + }, + "last_password_change_date_time": { + "type": "string", + "format": "date-time", + "description": "The time when this account last changed their password." + }, + "password_policies": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specifies password policies for the user.\nThis value is an enumeration with one possible value being “DisableStrongPassword”, which allows weaker passwords than the default policy to be specified.\n“DisablePasswordExpiration” can also be specified." + }, + "force_change_password_next_sign_in": { + "type": "boolean", + "format": "boolean", + "description": "*true* if the user must change her password on the next login; otherwise false." + }, + "force_change_password_next_sign_in_with_mfa": { + "type": "boolean", + "format": "boolean", + "description": "If *true*, at next sign-in, the user must perform a multi-factor authentication (MFA) before being forced to change their password. The behavior is identical to forceChangePasswordNextSignIn except that the user is required to first perform a multi-factor authentication before password change. After a password change, this property will be automatically reset to false. If not set, default is false." + } + } + }, + "settingsUpdateAccountRequest": { + "type": "object", + "properties": { + "account": { + "$ref": "#/definitions/settingsAccount", + "title": "The account resource which replaces the resource on the server" + }, + "update_mask": { + "$ref": "#/definitions/protobufFieldMask", + "title": "The update mask applies to the resource. For the `FieldMask` definition,\nsee https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask" + } + } + } + } +} diff --git a/pkg/server/grpc/option.go b/pkg/server/grpc/option.go index 8ccb9c4bf6..06e8538e9f 100644 --- a/pkg/server/grpc/option.go +++ b/pkg/server/grpc/option.go @@ -5,6 +5,7 @@ import ( "github.com/micro/cli/v2" "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/metrics" "github.com/owncloud/ocis-pkg/v2/log" ) @@ -14,11 +15,10 @@ type Option func(o *Options) // Options defines the available options for this package. type Options struct { Name string - Address string Logger log.Logger Context context.Context Config *config.Config - Namespace string + Metrics *metrics.Metrics Flags []cli.Flag } @@ -33,13 +33,6 @@ func newOptions(opts ...Option) Options { return opt } -// Logger provides a function to set the logger option. -func Logger(val log.Logger) Option { - return func(o *Options) { - o.Logger = val - } -} - // Name provides a name for the service. func Name(val string) Option { return func(o *Options) { @@ -47,10 +40,10 @@ func Name(val string) Option { } } -// Address provides an address for the service. -func Address(val string) Option { +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { return func(o *Options) { - o.Address = val + o.Logger = val } } @@ -68,10 +61,10 @@ func Config(val *config.Config) Option { } } -// Namespace provides a function to set the namespace option. -func Namespace(val string) Option { +// Metrics provides a function to set the metrics option. +func Metrics(val *metrics.Metrics) Option { return func(o *Options) { - o.Namespace = val + o.Metrics = val } } diff --git a/pkg/server/grpc/server.go b/pkg/server/grpc/server.go index 6f8d342121..6752862863 100644 --- a/pkg/server/grpc/server.go +++ b/pkg/server/grpc/server.go @@ -6,15 +6,15 @@ import ( "github.com/owncloud/ocis-pkg/v2/service/grpc" ) -// NewService initializes a new go-micro service ready to run -func NewService(opts ...Option) grpc.Service { +// Server initializes a new go-micro service ready to run +func Server(opts ...Option) grpc.Service { options := newOptions(opts...) service := grpc.NewService( - grpc.Name(options.Name), + grpc.Name(options.Config.Server.Name), grpc.Context(options.Context), - grpc.Address(options.Address), - grpc.Namespace(options.Namespace), + grpc.Address(options.Config.GRPC.Addr), + grpc.Namespace(options.Config.GRPC.Namespace), grpc.Logger(options.Logger), grpc.Flags(options.Flags...), ) diff --git a/pkg/server/http/option.go b/pkg/server/http/option.go new file mode 100644 index 0000000000..3687b735bb --- /dev/null +++ b/pkg/server/http/option.go @@ -0,0 +1,76 @@ +package http + +import ( + "context" + + "github.com/micro/cli/v2" + "github.com/owncloud/ocis-accounts/pkg/config" + "github.com/owncloud/ocis-accounts/pkg/metrics" + "github.com/owncloud/ocis-pkg/v2/log" +) + +// Option defines a single option function. +type Option func(o *Options) + +// Options defines the available options for this package. +type Options struct { + Name string + Logger log.Logger + Context context.Context + Config *config.Config + Metrics *metrics.Metrics + Flags []cli.Flag +} + +// newOptions initializes the available default options. +func newOptions(opts ...Option) Options { + opt := Options{} + + for _, o := range opts { + o(&opt) + } + + return opt +} + +// Name provides a name for the service. +func Name(val string) Option { + return func(o *Options) { + o.Name = val + } +} + +// Logger provides a function to set the logger option. +func Logger(val log.Logger) Option { + return func(o *Options) { + o.Logger = val + } +} + +// Context provides a function to set the context option. +func Context(val context.Context) Option { + return func(o *Options) { + o.Context = val + } +} + +// Config provides a function to set the config option. +func Config(val *config.Config) Option { + return func(o *Options) { + o.Config = val + } +} + +// Metrics provides a function to set the metrics option. +func Metrics(val *metrics.Metrics) Option { + return func(o *Options) { + o.Metrics = val + } +} + +// Flags provides a function to set the flags option. +func Flags(val []cli.Flag) Option { + return func(o *Options) { + o.Flags = append(o.Flags, val...) + } +} diff --git a/pkg/server/http/server.go b/pkg/server/http/server.go new file mode 100644 index 0000000000..fdd58b8c69 --- /dev/null +++ b/pkg/server/http/server.go @@ -0,0 +1,71 @@ +package http + +import ( + "github.com/go-chi/chi" + "github.com/owncloud/ocis-accounts/pkg/assets" + "github.com/owncloud/ocis-accounts/pkg/proto/v0" + svc "github.com/owncloud/ocis-accounts/pkg/service/v0" + "github.com/owncloud/ocis-accounts/pkg/version" + "github.com/owncloud/ocis-pkg/v2/middleware" + "github.com/owncloud/ocis-pkg/v2/service/http" +) + +// Server initializes the http service and server. +func Server(opts ...Option) http.Service { + options := newOptions(opts...) + + service := http.NewService( + http.Logger(options.Logger), + http.Name(options.Name), + http.Version(version.String), + http.Address(options.Config.HTTP.Addr), + http.Namespace(options.Config.HTTP.Namespace), + http.Context(options.Context), + http.Flags(options.Flags...), + ) + + handler, err := svc.New(svc.Logger(options.Logger), svc.Config(options.Config)) + if err != nil { + options.Logger.Fatal().Err(err).Msg("could not initialize service handler") + } + + mux := chi.NewMux() + + mux.Use(middleware.RealIP) + mux.Use(middleware.RequestID) + mux.Use(middleware.Cache) + mux.Use(middleware.Cors) + mux.Use(middleware.Secure) + + mux.Use(middleware.Version( + options.Name, + version.String, + )) + + mux.Use(middleware.Logger( + options.Logger, + )) + + mux.Use(middleware.Static( + options.Config.HTTP.Root, + assets.New( + assets.Logger(options.Logger), + assets.Config(options.Config), + ), + )) + + mux.Route(options.Config.HTTP.Root, func(r chi.Router) { + proto.RegisterAccountsServiceWeb(r, handler) + proto.RegisterGroupsServiceWeb(r, handler) + }) + + service.Handle( + "/", + mux, + ) + + if err := service.Init(); err != nil { + panic(err) + } + return service +} diff --git a/pkg/service/v0/service.go b/pkg/service/v0/service.go index 60380cf73a..df6b9e94d8 100644 --- a/pkg/service/v0/service.go +++ b/pkg/service/v0/service.go @@ -33,7 +33,6 @@ import ( ) // New returns a new instance of Service -// TODO pass in logger as options func New(opts ...Option) (s *Service, err error) { options := newOptions(opts...) logger := options.Logger @@ -121,14 +120,14 @@ func New(opts ...Option) (s *Service, err error) { // TODO groups for i := range accounts { var bytes []byte - if bytes, err = json.Marshal(accounts[i]); err != nil { - logger.Error().Err(err).Interface("account", accounts[i]).Msg("could not marshal default account") + if bytes, err = json.Marshal(&accounts[i]); err != nil { + logger.Error().Err(err).Interface("account", &accounts[i]).Msg("could not marshal default account") return } path := filepath.Join(accountsDir, accounts[i].Id) if err = ioutil.WriteFile(path, bytes, 0600); err != nil { accounts[i].PasswordProfile.Password = "***REMOVED***" - logger.Error().Err(err).Str("path", path).Interface("account", accounts[i]).Msg("could not persist default account") + logger.Error().Err(err).Str("path", path).Interface("account", &accounts[i]).Msg("could not persist default account") return } } @@ -173,9 +172,9 @@ func New(opts ...Option) (s *Service, err error) { logger.Error().Err(err).Str("path", path).Msg("could not unmarshal account") continue } - logger.Debug().Interface("account", a).Msg("found account") - if err = s.index.Index(a.Id, a); err != nil { - logger.Error().Err(err).Str("path", path).Interface("account", a).Msg("could not index account") + logger.Debug().Interface("account", &a).Msg("found account") + if err = s.index.Index(a.Id, &a); err != nil { + logger.Error().Err(err).Str("path", path).Interface("account", &a).Msg("could not index account") continue } } @@ -263,11 +262,11 @@ func (s Service) ListAccounts(ctx context.Context, in *proto.ListAccountsRequest s.log.Error().Err(err).Str("path", path).Msg("could not unmarshal account") continue } - s.log.Debug().Interface("account", a).Msg("found account") + s.log.Debug().Interface("account", &a).Msg("found account") if password != "" { if a.PasswordProfile == nil { - s.log.Debug().Interface("account", a).Msg("no password profile") + s.log.Debug().Interface("account", &a).Msg("no password profile") return fmt.Errorf("invalid password") } if !s.passwordIsValid(a.PasswordProfile.Password, password) { @@ -421,6 +420,21 @@ func (s Service) DeleteGroup(c context.Context, req *proto.DeleteGroupRequest, r return errors.New("not implemented") } +// AddMember implements the AccountsServiceHandler interface +func (s Service) AddMember(c context.Context, req *proto.AddMemberRequest, res *proto.Group) error { + return errors.New("not implemented") +} + +// RemoveMember implements the AccountsServiceHandler interface +func (s Service) RemoveMember(c context.Context, req *proto.RemoveMemberRequest, res *proto.Group) error { + return errors.New("not implemented") +} + +// ListMembers implements the AccountsServiceHandler interface +func (s Service) ListMembers(c context.Context, req *proto.ListMembersRequest, res *proto.ListMembersResponse) error { + return errors.New("not implemented") +} + // RegisterSettingsBundles pushes the settings bundle definitions for this extension to the ocis-settings service. func RegisterSettingsBundles(l *log.Logger) { // TODO this won't work with a registry other than mdns. Look into Micro's client initialization. diff --git a/reflex.conf b/reflex.conf new file mode 100644 index 0000000000..3e496fb0b4 --- /dev/null +++ b/reflex.conf @@ -0,0 +1,5 @@ +# backend +-r '^(cmd|pkg)/.*\.go$' -R '^node_modules/' -s -- sh -c 'make bin/ocis-accounts && bin/ocis-accounts server --asset-path assets/' + +# frontend +-r '^ui/.*\.(vue|js)$' -R '^node_modules/' -- sh -c 'yarn build && make generate' diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 0000000000..2c58522d70 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,52 @@ +import vue from 'rollup-plugin-vue' +import { terser } from 'rollup-plugin-terser' +import replace from '@rollup/plugin-replace' +import filesize from 'rollup-plugin-filesize' +import resolve from 'rollup-plugin-node-resolve' +import commonjs from '@rollup/plugin-commonjs' +import babel from 'rollup-plugin-babel' +import json from '@rollup/plugin-json' +import builtins from '@erquhart/rollup-plugin-node-builtins' +import globals from 'rollup-plugin-node-globals' + +const production = !process.env.ROLLUP_WATCH + +// We can't really do much about circular dependencies in node_modules +function onwarn (warning) { + if (warning.code !== 'CIRCULAR_DEPENDENCY') { + console.error(`(!) ${warning.message}`) + } +} + +export default { + input: 'ui/app.js', + output: { + file: 'assets/accounts.js', + format: 'amd', + sourcemap: !production + }, + onwarn, + plugins: [ + vue(), + replace({ + 'process.env.NODE_ENV': JSON.stringify('production') + }), + resolve({ + mainFields: ['browser', 'jsnext', 'module', 'main'], + include: 'node_modules/**', + preferBuiltins: true + }), + babel({ + exclude: 'node_modules/**', + runtimeHelpers: true + }), + commonjs({ + include: 'node_modules/**' + }), + json(), + globals(), + builtins(), + production && terser(), + production && filesize() + ] +} diff --git a/ui/app.js b/ui/app.js new file mode 100644 index 0000000000..510d6c3cb1 --- /dev/null +++ b/ui/app.js @@ -0,0 +1,39 @@ +import 'regenerator-runtime/runtime' +import App from './components/App.vue' +import store from './store' + +const appInfo = { + name: 'Accounts', + id: 'accounts', + icon: 'text-vcard', + isFileEditor: false, + extensions: [] +} + +const routes = [ + { + name: 'accounts', + path: '/', + components: { + app: App + } + } +] + +const navItems = [ + { + name: 'Accounts', + iconMaterial: appInfo.icon, + route: { + name: 'accounts', + path: `/${appInfo.id}/` + } + } +] + +export default { + appInfo, + routes, + navItems, + store +} diff --git a/ui/client/accounts/index.js b/ui/client/accounts/index.js new file mode 100644 index 0000000000..01e5d99725 --- /dev/null +++ b/ui/client/accounts/index.js @@ -0,0 +1,723 @@ +/* eslint-disable */ +import axios from 'axios' +import qs from 'qs' +let domain = '' +export const getDomain = () => { + return domain +} +export const setDomain = ($domain) => { + domain = $domain +} +export const request = (method, url, body, queryParameters, form, config) => { + method = method.toLowerCase() + let keys = Object.keys(queryParameters) + let queryUrl = url + if (keys.length > 0) { + queryUrl = url + '?' + qs.stringify(queryParameters) + } + // let queryUrl = url+(keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') + if (body) { + return axios[method](queryUrl, body, config) + } else if (method === 'get') { + return axios[method](queryUrl, config) + } else { + return axios[method](queryUrl, qs.stringify(form), config) + } +} +/*========================================================== + * + ==========================================================*/ +/** + * Creates an account + * request: AccountsService_CreateAccount + * url: AccountsService_CreateAccountURL + * method: AccountsService_CreateAccount_TYPE + * raw_url: AccountsService_CreateAccount_RAW_URL + * @param body - + */ +export const AccountsService_CreateAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-create' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_CreateAccount_RAW_URL = function() { + return '/api/v0/accounts/accounts-create' +} +export const AccountsService_CreateAccount_TYPE = function() { + return 'post' +} +export const AccountsService_CreateAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-create' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Deletes an account + * request: AccountsService_DeleteAccount + * url: AccountsService_DeleteAccountURL + * method: AccountsService_DeleteAccount_TYPE + * raw_url: AccountsService_DeleteAccount_RAW_URL + * @param body - + */ +export const AccountsService_DeleteAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-delete' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_DeleteAccount_RAW_URL = function() { + return '/api/v0/accounts/accounts-delete' +} +export const AccountsService_DeleteAccount_TYPE = function() { + return 'post' +} +export const AccountsService_DeleteAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-delete' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Gets an account + * request: AccountsService_GetAccount + * url: AccountsService_GetAccountURL + * method: AccountsService_GetAccount_TYPE + * raw_url: AccountsService_GetAccount_RAW_URL + * @param body - + */ +export const AccountsService_GetAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-get' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_GetAccount_RAW_URL = function() { + return '/api/v0/accounts/accounts-get' +} +export const AccountsService_GetAccount_TYPE = function() { + return 'post' +} +export const AccountsService_GetAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-get' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Lists accounts + * request: AccountsService_ListAccounts + * url: AccountsService_ListAccountsURL + * method: AccountsService_ListAccounts_TYPE + * raw_url: AccountsService_ListAccounts_RAW_URL + * @param body - + */ +export const AccountsService_ListAccounts = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-list' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_ListAccounts_RAW_URL = function() { + return '/api/v0/accounts/accounts-list' +} +export const AccountsService_ListAccounts_TYPE = function() { + return 'post' +} +export const AccountsService_ListAccountsURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-list' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Updates an account + * request: AccountsService_UpdateAccount + * url: AccountsService_UpdateAccountURL + * method: AccountsService_UpdateAccount_TYPE + * raw_url: AccountsService_UpdateAccount_RAW_URL + * @param body - + */ +export const AccountsService_UpdateAccount = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/api/v0/accounts/accounts-update' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const AccountsService_UpdateAccount_RAW_URL = function() { + return '/api/v0/accounts/accounts-update' +} +export const AccountsService_UpdateAccount_TYPE = function() { + return 'post' +} +export const AccountsService_UpdateAccountURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/api/v0/accounts/accounts-update' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** +* Lists groups +* request: GroupsService_ListGroups +* url: GroupsService_ListGroupsURL +* method: GroupsService_ListGroups_TYPE +* raw_url: GroupsService_ListGroups_RAW_URL + * @param pageSize - Optional. The maximum number of groups to return in the response. + * @param pageToken - Optional. A pagination token returned from a previous call to `Get` +that indicates from where search should continue. + * @param fieldMaskPaths - The set of field mask paths. + * @param query - Optional. Search criteria used to select the groups to return. +If no search criteria is specified then all groups will be +returned. TODO update query language +Query expressions can be used to restrict results based upon +the account properties where the operators `=`, `NOT`, `AND` and `OR` +can be used along with the suffix wildcard symbol `*`. + +The string properties in a query expression should use escaped quotes +for values that include whitespace to prevent unexpected behavior. + +Some example queries are: + +* Query `display_name=Th*` returns accounts whose display_name +starts with "Th" +* Query `display_name=\\"Test String\\"` returns groups with +display names that include both "Test" and "String" +*/ +export const GroupsService_ListGroups = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups' + let body + let queryParameters = {} + let form = {} + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const GroupsService_ListGroups_RAW_URL = function() { + return '/v0/groups' +} +export const GroupsService_ListGroups_TYPE = function() { + return 'get' +} +export const GroupsService_ListGroupsURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups' + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Creates a group + * request: GroupsService_CreateGroup + * url: GroupsService_CreateGroupURL + * method: GroupsService_CreateGroup_TYPE + * raw_url: GroupsService_CreateGroup_RAW_URL + * @param body - The account resource to create + */ +export const GroupsService_CreateGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups' + let body + let queryParameters = {} + let form = {} + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const GroupsService_CreateGroup_RAW_URL = function() { + return '/v0/groups' +} +export const GroupsService_CreateGroup_TYPE = function() { + return 'post' +} +export const GroupsService_CreateGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups' + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** +* Updates a group +* request: GroupsService_UpdateGroup +* url: GroupsService_UpdateGroupURL +* method: GroupsService_UpdateGroup_TYPE +* raw_url: GroupsService_UpdateGroup_RAW_URL + * @param groupId - The unique identifier for the group. +Returned by default. Inherited from directoryObject. Key. Not nullable. Read-only. + * @param body - The group resource which replaces the resource on the server +*/ +export const GroupsService_UpdateGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{group.id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{group.id}', `${parameters['groupId']}`) + if (parameters['groupId'] === undefined) { + return Promise.reject(new Error('Missing required parameter: groupId')) + } + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('patch', domain + path, body, queryParameters, form, config) +} +export const GroupsService_UpdateGroup_RAW_URL = function() { + return '/v0/groups/{group.id}' +} +export const GroupsService_UpdateGroup_TYPE = function() { + return 'patch' +} +export const GroupsService_UpdateGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{group.id}' + path = path.replace('{group.id}', `${parameters['groupId']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Gets an groups + * request: GroupsService_GetGroup + * url: GroupsService_GetGroupURL + * method: GroupsService_GetGroup_TYPE + * raw_url: GroupsService_GetGroup_RAW_URL + * @param id - + */ +export const GroupsService_GetGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const GroupsService_GetGroup_RAW_URL = function() { + return '/v0/groups/{id}' +} +export const GroupsService_GetGroup_TYPE = function() { + return 'get' +} +export const GroupsService_GetGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * Deletes a group + * request: GroupsService_DeleteGroup + * url: GroupsService_DeleteGroupURL + * method: GroupsService_DeleteGroup_TYPE + * raw_url: GroupsService_DeleteGroup_RAW_URL + * @param id - + */ +export const GroupsService_DeleteGroup = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('delete', domain + path, body, queryParameters, form, config) +} +export const GroupsService_DeleteGroup_RAW_URL = function() { + return '/v0/groups/{id}' +} +export const GroupsService_DeleteGroup_TYPE = function() { + return 'delete' +} +export const GroupsService_DeleteGroupURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** +* group:listmembers https://docs.microsoft.com/en-us/graph/api/group-list-members?view=graph-rest-1.0 +* request: GroupsService_ListMembers +* url: GroupsService_ListMembersURL +* method: GroupsService_ListMembers_TYPE +* raw_url: GroupsService_ListMembers_RAW_URL + * @param id - The group id + * @param pageSize - + * @param pageToken - Optional. A pagination token returned from a previous call to `Get` +that indicates from where search should continue. + * @param fieldMaskPaths - The set of field mask paths. + * @param query - Optional. Search criteria used to select the groups to return. +If no search criteria is specified then all groups will be +returned. TODO update query language +Query expressions can be used to restrict results based upon +the account properties where the operators `=`, `NOT`, `AND` and `OR` +can be used along with the suffix wildcard symbol `*`. + +The string properties in a query expression should use escaped quotes +for values that include whitespace to prevent unexpected behavior. + +Some example queries are: + +* Query `display_name=Th*` returns accounts whose display_name +starts with "Th" +* Query `display_name=\\"Test String\\"` returns groups with +display names that include both "Test" and "String" +*/ +export const GroupsService_ListMembers = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}/members/$ref' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('get', domain + path, body, queryParameters, form, config) +} +export const GroupsService_ListMembers_RAW_URL = function() { + return '/v0/groups/{id}/members/$ref' +} +export const GroupsService_ListMembers_TYPE = function() { + return 'get' +} +export const GroupsService_ListMembersURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}/members/$ref' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['pageSize'] !== undefined) { + queryParameters['page_size'] = parameters['pageSize'] + } + if (parameters['pageToken'] !== undefined) { + queryParameters['page_token'] = parameters['pageToken'] + } + if (parameters['fieldMaskPaths'] !== undefined) { + queryParameters['field_mask.paths'] = parameters['fieldMaskPaths'] + } + if (parameters['query'] !== undefined) { + queryParameters['query'] = parameters['query'] + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * group:addmember https://docs.microsoft.com/en-us/graph/api/group-post-members?view=graph-rest-1.0&tabs=http + * request: GroupsService_AddMember + * url: GroupsService_AddMemberURL + * method: GroupsService_AddMember_TYPE + * raw_url: GroupsService_AddMember_RAW_URL + * @param id - The account id to add + * @param body - + */ +export const GroupsService_AddMember = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}/members/$ref' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + if (parameters['body'] !== undefined) { + body = parameters['body'] + } + if (parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required parameter: body')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('post', domain + path, body, queryParameters, form, config) +} +export const GroupsService_AddMember_RAW_URL = function() { + return '/v0/groups/{id}/members/$ref' +} +export const GroupsService_AddMember_TYPE = function() { + return 'post' +} +export const GroupsService_AddMemberURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}/members/$ref' + path = path.replace('{id}', `${parameters['id']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} +/** + * group:removemember https://docs.microsoft.com/en-us/graph/api/group-delete-members?view=graph-rest-1.0 + * request: GroupsService_RemoveMember + * url: GroupsService_RemoveMemberURL + * method: GroupsService_RemoveMember_TYPE + * raw_url: GroupsService_RemoveMember_RAW_URL + * @param id - The group id + * @param accountId - The account id to remove + */ +export const GroupsService_RemoveMember = function(parameters = {}) { + const domain = parameters.$domain ? parameters.$domain : getDomain() + const config = parameters.$config + let path = '/v0/groups/{id}/members/{account_id}/$ref' + let body + let queryParameters = {} + let form = {} + path = path.replace('{id}', `${parameters['id']}`) + if (parameters['id'] === undefined) { + return Promise.reject(new Error('Missing required parameter: id')) + } + path = path.replace('{account_id}', `${parameters['accountId']}`) + if (parameters['accountId'] === undefined) { + return Promise.reject(new Error('Missing required parameter: accountId')) + } + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }); + } + return request('delete', domain + path, body, queryParameters, form, config) +} +export const GroupsService_RemoveMember_RAW_URL = function() { + return '/v0/groups/{id}/members/{account_id}/$ref' +} +export const GroupsService_RemoveMember_TYPE = function() { + return 'delete' +} +export const GroupsService_RemoveMemberURL = function(parameters = {}) { + let queryParameters = {} + const domain = parameters.$domain ? parameters.$domain : getDomain() + let path = '/v0/groups/{id}/members/{account_id}/$ref' + path = path.replace('{id}', `${parameters['id']}`) + path = path.replace('{account_id}', `${parameters['accountId']}`) + if (parameters.$queryParameters) { + Object.keys(parameters.$queryParameters).forEach(function(parameterName) { + queryParameters[parameterName] = parameters.$queryParameters[parameterName] + }) + } + let keys = Object.keys(queryParameters) + return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') +} \ No newline at end of file diff --git a/ui/components/App.vue b/ui/components/App.vue new file mode 100644 index 0000000000..fdd2145262 --- /dev/null +++ b/ui/components/App.vue @@ -0,0 +1,34 @@ + + + diff --git a/ui/components/accounts/AccountsList.vue b/ui/components/accounts/AccountsList.vue new file mode 100644 index 0000000000..7d15d42376 --- /dev/null +++ b/ui/components/accounts/AccountsList.vue @@ -0,0 +1,47 @@ + + + diff --git a/ui/components/accounts/Avatar.vue b/ui/components/accounts/Avatar.vue new file mode 100644 index 0000000000..e0b13558b7 --- /dev/null +++ b/ui/components/accounts/Avatar.vue @@ -0,0 +1,130 @@ + + diff --git a/ui/store/index.js b/ui/store/index.js new file mode 100644 index 0000000000..86917928b4 --- /dev/null +++ b/ui/store/index.js @@ -0,0 +1,85 @@ +import { + // eslint-disable-next-line camelcase + AccountsService_ListAccounts +} from '../client/accounts' +import axios from 'axios' + +const state = { + config: null, + initialized: false, + accounts: {} +} + +const getters = { + config: state => state.config, + isInitialized: state => state.initialized, + getAccountsSorted: state => { + return Object.values(state.accounts).sort((a1, a2) => { + if (a1.preferredName === a2.preferredName) { + return a1.id.localeCompare(a2.id) + } + return a1.preferredName.localeCompare(a2.preferredName) + }) + } +} + +const mutations = { + LOAD_CONFIG (state, config) { + state.config = config + }, + SET_INITIALIZED (state, value) { + state.initialized = value + }, + SET_ACCOUNTS (state, accounts) { + state.accounts = accounts + } +} + +const actions = { + loadConfig ({ commit }, config) { + commit('LOAD_CONFIG', config) + }, + + async initialize ({ commit, dispatch }) { + await dispatch('fetchAccounts') + commit('SET_INITIALIZED', true) + }, + + async fetchAccounts ({ commit, dispatch, rootGetters }) { + injectAuthToken(rootGetters) + const response = await AccountsService_ListAccounts({ + $domain: rootGetters.configuration.server, + body: {} + }) + if (response.status === 201) { + const accounts = response.data.accounts + commit('SET_ACCOUNTS', accounts || []) + } else { + dispatch('showMessage', { + title: 'Failed to fetch accounts.', + desc: response.statusText, + status: 'danger' + }, { root: true }) + } + } +} + +export default { + namespaced: true, + state, + getters, + actions, + mutations +} + +function injectAuthToken (rootGetters) { + axios.interceptors.request.use(config => { + if (typeof config.headers.Authorization === 'undefined') { + const token = rootGetters.user.token + if (token) { + config.headers.Authorization = `Bearer ${token}` + } + } + return config + }) +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..0d3fbb59ca --- /dev/null +++ b/yarn.lock @@ -0,0 +1,5097 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.3", "@babel/code-frame@^7.5.5": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.10.3.tgz#324bcfd8d35cd3d47dae18cde63d752086435e9a" + integrity sha512-fDx9eNW0qz0WkUeqL6tXEXzVlPh6Y5aCDEZesl0xBGA8ndRukX91Uk44ZqnkECp01NAZUdCAl+aiQNGi0k88Eg== + dependencies: + "@babel/highlight" "^7.10.3" + +"@babel/compat-data@^7.10.1", "@babel/compat-data@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.10.3.tgz#9af3e033f36e8e2d6e47570db91e64a846f5d382" + integrity sha512-BDIfJ9uNZuI0LajPfoYV28lX8kyCPMHY6uY4WH1lJdcicmAfxCK5ASzaeV0D/wsUaRH/cLk+amuxtC37sZ8TUg== + dependencies: + browserslist "^4.12.0" + invariant "^2.2.4" + semver "^5.5.0" + +"@babel/core@^7.7.7": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.10.3.tgz#73b0e8ddeec1e3fdd7a2de587a60e17c440ec77e" + integrity sha512-5YqWxYE3pyhIi84L84YcwjeEgS+fa7ZjK6IBVGTjDVfm64njkR2lfDhVR5OudLk8x2GK59YoSyVv+L/03k1q9w== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helpers" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.13" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + +"@babel/generator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.10.3.tgz#32b9a0d963a71d7a54f5f6c15659c3dbc2a523a5" + integrity sha512-drt8MUHbEqRzNR0xnF8nMehbY11b1SDkRw03PSNH/3Rb2Z35oxkddVSi3rcaak0YJQ86PCuE7Qx1jSFhbLNBMA== + dependencies: + "@babel/types" "^7.10.3" + jsesc "^2.5.1" + lodash "^4.17.13" + source-map "^0.5.0" + +"@babel/helper-annotate-as-pure@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz#f6d08acc6f70bbd59b436262553fb2e259a1a268" + integrity sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw== + dependencies: + "@babel/types" "^7.10.1" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.1": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.3.tgz#4e9012d6701bef0030348d7f9c808209bd3e8687" + integrity sha512-lo4XXRnBlU6eRM92FkiZxpo1xFLmv3VsPFk61zJKMm7XYJfwqXHsYJTY6agoc4a3L8QPw1HqWehO18coZgbT6A== + dependencies: + "@babel/helper-explode-assignable-expression" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-compilation-targets@^7.10.2": + version "7.10.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz#a17d9723b6e2c750299d2a14d4637c76936d8285" + integrity sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA== + dependencies: + "@babel/compat-data" "^7.10.1" + browserslist "^4.12.0" + invariant "^2.2.4" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/helper-create-class-features-plugin@^7.10.1": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.3.tgz#2783daa6866822e3d5ed119163b50f0fc3ae4b35" + integrity sha512-iRT9VwqtdFmv7UheJWthGc/h2s7MqoweBF9RUj77NFZsg9VfISvBTum3k6coAhJ8RWv2tj3yUjA03HxPd0vfpQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-member-expression-to-functions" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + +"@babel/helper-create-regexp-features-plugin@^7.10.1", "@babel/helper-create-regexp-features-plugin@^7.8.3": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz#1b8feeab1594cbcfbf3ab5a3bbcabac0468efdbd" + integrity sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + regexpu-core "^4.7.0" + +"@babel/helper-define-map@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.3.tgz#d27120a5e57c84727b30944549b2dfeca62401a8" + integrity sha512-bxRzDi4Sin/k0drWCczppOhov1sBSdBvXJObM1NLHQzjhXhwRtn7aRWGvLJWCYbuu2qUk3EKs6Ci9C9ps8XokQ== + dependencies: + "@babel/helper-function-name" "^7.10.3" + "@babel/types" "^7.10.3" + lodash "^4.17.13" + +"@babel/helper-explode-assignable-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.3.tgz#9dc14f0cfa2833ea830a9c8a1c742b6e7461b05e" + integrity sha512-0nKcR64XrOC3lsl+uhD15cwxPvaB6QKUDlD84OT9C3myRbhJqTMYir69/RWItUvHpharv0eJ/wk7fl34ONSwZw== + dependencies: + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-function-name@^7.10.1", "@babel/helper-function-name@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.3.tgz#79316cd75a9fa25ba9787ff54544307ed444f197" + integrity sha512-FvSj2aiOd8zbeqijjgqdMDSyxsGHaMt5Tr0XjQsGKHD3/1FP3wksjnLAWzxw7lvXiej8W1Jt47SKTZ6upQNiRw== + dependencies: + "@babel/helper-get-function-arity" "^7.10.3" + "@babel/template" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-get-function-arity@^7.10.1", "@babel/helper-get-function-arity@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.3.tgz#3a28f7b28ccc7719eacd9223b659fdf162e4c45e" + integrity sha512-iUD/gFsR+M6uiy69JA6fzM5seno8oE85IYZdbVVEuQaZlEzMO2MXblh+KSPJgsZAUx0EEbWXU0yJaW7C9CdAVg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-hoist-variables@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.3.tgz#d554f52baf1657ffbd7e5137311abc993bb3f068" + integrity sha512-9JyafKoBt5h20Yv1+BXQMdcXXavozI1vt401KBiRc2qzUepbVnd7ogVNymY1xkQN9fekGwfxtotH2Yf5xsGzgg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-member-expression-to-functions@^7.10.1", "@babel/helper-member-expression-to-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.3.tgz#bc3663ac81ac57c39148fef4c69bf48a77ba8dd6" + integrity sha512-q7+37c4EPLSjNb2NmWOjNwj0+BOyYlssuQ58kHEWk1Z78K5i8vTUsteq78HMieRPQSl/NtpQyJfdjt3qZ5V2vw== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.1", "@babel/helper-module-imports@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz#766fa1d57608e53e5676f23ae498ec7a95e1b11a" + integrity sha512-Jtqw5M9pahLSUWA+76nhK9OG8nwYXzhQzVIGFoNaHnXF/r4l7kz4Fl0UAW7B6mqC5myoJiBP5/YQlXQTMfHI9w== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-module-transforms@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz#24e2f08ee6832c60b157bb0936c86bef7210c622" + integrity sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + lodash "^4.17.13" + +"@babel/helper-optimise-call-expression@^7.10.1", "@babel/helper-optimise-call-expression@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.3.tgz#f53c4b6783093195b0f69330439908841660c530" + integrity sha512-kT2R3VBH/cnSz+yChKpaKRJQJWxdGoc6SjioRId2wkeV3bK0wLLioFpJROrX0U4xr/NmxSSAWT/9Ih5snwIIzg== + dependencies: + "@babel/types" "^7.10.3" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.1", "@babel/helper-plugin-utils@^7.10.3", "@babel/helper-plugin-utils@^7.8.0": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz#aac45cccf8bc1873b99a85f34bceef3beb5d3244" + integrity sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g== + +"@babel/helper-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.10.1.tgz#021cf1a7ba99822f993222a001cc3fec83255b96" + integrity sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g== + dependencies: + lodash "^4.17.13" + +"@babel/helper-remap-async-to-generator@^7.10.1", "@babel/helper-remap-async-to-generator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.3.tgz#18564f8a6748be466970195b876e8bba3bccf442" + integrity sha512-sLB7666ARbJUGDO60ZormmhQOyqMX/shKBXZ7fy937s+3ID8gSrneMvKSSb+8xIM5V7Vn6uNVtOY1vIm26XLtA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-wrap-function" "^7.10.1" + "@babel/template" "^7.10.3" + "@babel/traverse" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/helper-replace-supers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz#ec6859d20c5d8087f6a2dc4e014db7228975f13d" + integrity sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.10.1" + "@babel/helper-optimise-call-expression" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helper-simple-access@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz#08fb7e22ace9eb8326f7e3920a1c2052f13d851e" + integrity sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helper-split-export-declaration@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz#c6f4be1cbc15e3a868e4c64a17d5d31d754da35f" + integrity sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g== + dependencies: + "@babel/types" "^7.10.1" + +"@babel/helper-validator-identifier@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.3.tgz#60d9847f98c4cea1b279e005fdb7c28be5412d15" + integrity sha512-bU8JvtlYpJSBPuj1VUmKpFGaDZuLxASky3LhaKj3bmpSTY6VWooSM8msk+Z0CZoErFye2tlABF6yDkT3FOPAXw== + +"@babel/helper-wrap-function@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz#956d1310d6696257a7afd47e4c42dfda5dfcedc9" + integrity sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/helpers@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.1.tgz#a6827b7cb975c9d9cef5fd61d919f60d8844a973" + integrity sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw== + dependencies: + "@babel/template" "^7.10.1" + "@babel/traverse" "^7.10.1" + "@babel/types" "^7.10.1" + +"@babel/highlight@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.3.tgz#c633bb34adf07c5c13156692f5922c81ec53f28d" + integrity sha512-Ih9B/u7AtgEnySE2L2F0Xm0GaM729XqqLfHkalTsbjXGyqmf/6M0Cu0WpvqueUlW+xk88BHw9Nkpj49naU+vWw== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.10.3.tgz#7e71d892b0d6e7d04a1af4c3c79d72c1f10f5315" + integrity sha512-oJtNJCMFdIMwXGmx+KxuaD7i3b8uS7TTFYW/FNG2BT8m+fmGHoiPYoH0Pe3gya07WuFmM5FCDIr1x0irkD/hyA== + +"@babel/plugin-proposal-async-generator-functions@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.3.tgz#5a02453d46e5362e2073c7278beab2e53ad7d939" + integrity sha512-WUUWM7YTOudF4jZBAJIW9D7aViYC/Fn0Pln4RIHlQALyno3sXSjqmTA4Zy1TKC2D49RCR8Y/Pn4OIUtEypK3CA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-remap-async-to-generator" "^7.10.3" + "@babel/plugin-syntax-async-generators" "^7.8.0" + +"@babel/plugin-proposal-class-properties@^7.10.1", "@babel/plugin-proposal-class-properties@^7.7.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz#046bc7f6550bb08d9bd1d4f060f5f5a4f1087e01" + integrity sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-dynamic-import@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz#e36979dc1dc3b73f6d6816fc4951da2363488ef0" + integrity sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + +"@babel/plugin-proposal-export-default-from@^7.7.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.10.1.tgz#59ea2a4f09dbb0358c73dab27def3d21a27bd370" + integrity sha512-Xfc1CfHapIkwZ/+AI+j4Ha3g233ol0EEdy6SmnUuQQiZX78SfQXHd8tmntc5zqCkwPnIHoiZa6l6p0OAvxYXHw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-export-default-from" "^7.10.1" + +"@babel/plugin-proposal-json-strings@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz#b1e691ee24c651b5a5e32213222b2379734aff09" + integrity sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-json-strings" "^7.8.0" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz#02dca21673842ff2fe763ac253777f235e9bbf78" + integrity sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + +"@babel/plugin-proposal-numeric-separator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz#a9a38bc34f78bdfd981e791c27c6fdcec478c123" + integrity sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + +"@babel/plugin-proposal-object-rest-spread@^7.10.3", "@babel/plugin-proposal-object-rest-spread@^7.7.7": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.3.tgz#b8d0d22f70afa34ad84b7a200ff772f9b9fce474" + integrity sha512-ZZh5leCIlH9lni5bU/wB/UcjtcVLgR8gc+FAgW2OOY+m9h1II3ItTO1/cewNUcsIDZSYcSaz/rYVls+Fb0ExVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.10.1" + +"@babel/plugin-proposal-optional-catch-binding@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz#c9f86d99305f9fa531b568ff5ab8c964b8b223d2" + integrity sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + +"@babel/plugin-proposal-optional-chaining@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.3.tgz#9a726f94622b653c0a3a7a59cdce94730f526f7c" + integrity sha512-yyG3n9dJ1vZ6v5sfmIlMMZ8azQoqx/5/nZTSWX1td6L1H1bsjzA8TInDChpafCZiJkeOFzp/PtrfigAQXxI1Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + +"@babel/plugin-proposal-private-methods@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz#ed85e8058ab0fe309c3f448e5e1b73ca89cdb598" + integrity sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-proposal-unicode-property-regex@^7.10.1", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz#dc04feb25e2dd70c12b05d680190e138fa2c0c6f" + integrity sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-async-generators@^7.8.0": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz#d5bc0645913df5b17ad7eda0fa2308330bde34c5" + integrity sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-dynamic-import@^7.7.4", "@babel/plugin-syntax-dynamic-import@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-default-from@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.10.1.tgz#634f58f36b5d6320d80f75441fdc61e1c05c33b0" + integrity sha512-+rcL4S/mN1Ss4zhSCbxzv1Wsf12eauvgTjWi0krXEeX1zd6qSxYnJoniE5Ssr5w2WPt61oUCJyXIFQIqO/29zw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-json-strings@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz#25761ee7410bc8cf97327ba741ee94e4a61b7d99" + integrity sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-syntax-object-rest-spread@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.0": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-top-level-await@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz#8b8733f8c57397b3eaa47ddba8841586dcaef362" + integrity sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-arrow-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz#cb5ee3a36f0863c06ead0b409b4cc43a889b295b" + integrity sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-async-to-generator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz#e5153eb1a3e028f79194ed8a7a4bf55f862b2062" + integrity sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg== + dependencies: + "@babel/helper-module-imports" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-remap-async-to-generator" "^7.10.1" + +"@babel/plugin-transform-block-scoped-functions@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz#146856e756d54b20fff14b819456b3e01820b85d" + integrity sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-block-scoping@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz#47092d89ca345811451cd0dc5d91605982705d5e" + integrity sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + lodash "^4.17.13" + +"@babel/plugin-transform-classes@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.3.tgz#8d9a656bc3d01f3ff69e1fccb354b0f9d72ac544" + integrity sha512-irEX0ChJLaZVC7FvvRoSIxJlmk0IczFLcwaRXUArBKYHCHbOhe57aG8q3uw/fJsoSXvZhjRX960hyeAGlVBXZw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-define-map" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-optimise-call-expression" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/helper-replace-supers" "^7.10.1" + "@babel/helper-split-export-declaration" "^7.10.1" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.3.tgz#d3aa6eef67cb967150f76faff20f0abbf553757b" + integrity sha512-GWzhaBOsdbjVFav96drOz7FzrcEW6AP5nax0gLIpstiFaI3LOb2tAg06TimaWU6YKOfUACK3FVrxPJ4GSc5TgA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.3" + +"@babel/plugin-transform-destructuring@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz#abd58e51337815ca3a22a336b85f62b998e71907" + integrity sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-dotall-regex@^7.10.1", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz#920b9fec2d78bb57ebb64a644d5c2ba67cc104ee" + integrity sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-duplicate-keys@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz#c900a793beb096bc9d4d0a9d0cde19518ffc83b9" + integrity sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-exponentiation-operator@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz#279c3116756a60dd6e6f5e488ba7957db9c59eb3" + integrity sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-for-of@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz#ff01119784eb0ee32258e8646157ba2501fcfda5" + integrity sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-function-name@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz#4ed46fd6e1d8fde2a2ec7b03c66d853d2c92427d" + integrity sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw== + dependencies: + "@babel/helper-function-name" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz#5794f8da82846b22e4e6631ea1658bce708eb46a" + integrity sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-member-expression-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz#90347cba31bca6f394b3f7bd95d2bbfd9fce2f39" + integrity sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-modules-amd@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz#65950e8e05797ebd2fe532b96e19fc5482a1d52a" + integrity sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-commonjs@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz#d5ff4b4413ed97ffded99961056e1fb980fb9301" + integrity sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-simple-access" "^7.10.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-systemjs@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.3.tgz#004ae727b122b7b146b150d50cba5ffbff4ac56b" + integrity sha512-GWXWQMmE1GH4ALc7YXW56BTh/AlzvDWhUNn9ArFF0+Cz5G8esYlVbXfdyHa1xaD1j+GnBoCeoQNlwtZTVdiG/A== + dependencies: + "@babel/helper-hoist-variables" "^7.10.3" + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-modules-umd@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz#ea080911ffc6eb21840a5197a39ede4ee67b1595" + integrity sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA== + dependencies: + "@babel/helper-module-transforms" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.3.tgz#a4f8444d1c5a46f35834a410285f2c901c007ca6" + integrity sha512-I3EH+RMFyVi8Iy/LekQm948Z4Lz4yKT7rK+vuCAeRm0kTa6Z5W7xuhRxDNJv0FPya/her6AUgrDITb70YHtTvA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.8.3" + +"@babel/plugin-transform-new-target@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz#6ee41a5e648da7632e22b6fb54012e87f612f324" + integrity sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-object-super@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz#2e3016b0adbf262983bf0d5121d676a5ed9c4fde" + integrity sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-replace-supers" "^7.10.1" + +"@babel/plugin-transform-parameters@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz#b25938a3c5fae0354144a720b07b32766f683ddd" + integrity sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg== + dependencies: + "@babel/helper-get-function-arity" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-property-literals@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz#cffc7315219230ed81dc53e4625bf86815b6050d" + integrity sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-regenerator@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.3.tgz#6ec680f140a5ceefd291c221cb7131f6d7e8cb6d" + integrity sha512-H5kNeW0u8mbk0qa1jVIVTeJJL6/TJ81ltD4oyPx0P499DhMJrTmmIFCmJ3QloGpQG8K9symccB7S7SJpCKLwtw== + dependencies: + regenerator-transform "^0.14.2" + +"@babel/plugin-transform-reserved-words@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz#0fc1027312b4d1c3276a57890c8ae3bcc0b64a86" + integrity sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-runtime@^7.8.0": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.3.tgz#3b287b06acc534a7cb6e6c71d6b1d88b1922dd6c" + integrity sha512-b5OzMD1Hi8BBzgQdRHyVVaYrk9zG0wset1it2o3BgonkPadXfOv0aXRqd7864DeOIu3FGKP/h6lr15FE5mahVw== + dependencies: + "@babel/helper-module-imports" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + resolve "^1.8.1" + semver "^5.5.1" + +"@babel/plugin-transform-shorthand-properties@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz#e8b54f238a1ccbae482c4dce946180ae7b3143f3" + integrity sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-spread@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz#0c6d618a0c4461a274418460a28c9ccf5239a7c8" + integrity sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-sticky-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz#90fc89b7526228bed9842cff3588270a7a393b00" + integrity sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + "@babel/helper-regex" "^7.10.1" + +"@babel/plugin-transform-template-literals@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.3.tgz#69d39b3d44b31e7b4864173322565894ce939b25" + integrity sha512-yaBn9OpxQra/bk0/CaA4wr41O0/Whkg6nqjqApcinxM7pro51ojhX6fv1pimAnVjVfDy14K0ULoRL70CA9jWWA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.3" + +"@babel/plugin-transform-typeof-symbol@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz#60c0239b69965d166b80a84de7315c1bc7e0bb0e" + integrity sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-unicode-escapes@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz#add0f8483dab60570d9e03cecef6c023aa8c9940" + integrity sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/plugin-transform-unicode-regex@^7.10.1": + version "7.10.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz#6b58f2aea7b68df37ac5025d9c88752443a6b43f" + integrity sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.10.1" + "@babel/helper-plugin-utils" "^7.10.1" + +"@babel/preset-env@^7.7.7": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.10.3.tgz#3e58c9861bbd93b6a679987c7e4bd365c56c80c9" + integrity sha512-jHaSUgiewTmly88bJtMHbOd1bJf2ocYxb5BWKSDQIP5tmgFuS/n0gl+nhSrYDhT33m0vPxp+rP8oYYgPgMNQlg== + dependencies: + "@babel/compat-data" "^7.10.3" + "@babel/helper-compilation-targets" "^7.10.2" + "@babel/helper-module-imports" "^7.10.3" + "@babel/helper-plugin-utils" "^7.10.3" + "@babel/plugin-proposal-async-generator-functions" "^7.10.3" + "@babel/plugin-proposal-class-properties" "^7.10.1" + "@babel/plugin-proposal-dynamic-import" "^7.10.1" + "@babel/plugin-proposal-json-strings" "^7.10.1" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.10.1" + "@babel/plugin-proposal-numeric-separator" "^7.10.1" + "@babel/plugin-proposal-object-rest-spread" "^7.10.3" + "@babel/plugin-proposal-optional-catch-binding" "^7.10.1" + "@babel/plugin-proposal-optional-chaining" "^7.10.3" + "@babel/plugin-proposal-private-methods" "^7.10.1" + "@babel/plugin-proposal-unicode-property-regex" "^7.10.1" + "@babel/plugin-syntax-async-generators" "^7.8.0" + "@babel/plugin-syntax-class-properties" "^7.10.1" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-json-strings" "^7.8.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.1" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.0" + "@babel/plugin-syntax-top-level-await" "^7.10.1" + "@babel/plugin-transform-arrow-functions" "^7.10.1" + "@babel/plugin-transform-async-to-generator" "^7.10.1" + "@babel/plugin-transform-block-scoped-functions" "^7.10.1" + "@babel/plugin-transform-block-scoping" "^7.10.1" + "@babel/plugin-transform-classes" "^7.10.3" + "@babel/plugin-transform-computed-properties" "^7.10.3" + "@babel/plugin-transform-destructuring" "^7.10.1" + "@babel/plugin-transform-dotall-regex" "^7.10.1" + "@babel/plugin-transform-duplicate-keys" "^7.10.1" + "@babel/plugin-transform-exponentiation-operator" "^7.10.1" + "@babel/plugin-transform-for-of" "^7.10.1" + "@babel/plugin-transform-function-name" "^7.10.1" + "@babel/plugin-transform-literals" "^7.10.1" + "@babel/plugin-transform-member-expression-literals" "^7.10.1" + "@babel/plugin-transform-modules-amd" "^7.10.1" + "@babel/plugin-transform-modules-commonjs" "^7.10.1" + "@babel/plugin-transform-modules-systemjs" "^7.10.3" + "@babel/plugin-transform-modules-umd" "^7.10.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.10.3" + "@babel/plugin-transform-new-target" "^7.10.1" + "@babel/plugin-transform-object-super" "^7.10.1" + "@babel/plugin-transform-parameters" "^7.10.1" + "@babel/plugin-transform-property-literals" "^7.10.1" + "@babel/plugin-transform-regenerator" "^7.10.3" + "@babel/plugin-transform-reserved-words" "^7.10.1" + "@babel/plugin-transform-shorthand-properties" "^7.10.1" + "@babel/plugin-transform-spread" "^7.10.1" + "@babel/plugin-transform-sticky-regex" "^7.10.1" + "@babel/plugin-transform-template-literals" "^7.10.3" + "@babel/plugin-transform-typeof-symbol" "^7.10.1" + "@babel/plugin-transform-unicode-escapes" "^7.10.1" + "@babel/plugin-transform-unicode-regex" "^7.10.1" + "@babel/preset-modules" "^0.1.3" + "@babel/types" "^7.10.3" + browserslist "^4.12.0" + core-js-compat "^3.6.2" + invariant "^2.2.2" + levenary "^1.1.1" + semver "^5.5.0" + +"@babel/preset-modules@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.3.tgz#13242b53b5ef8c883c3cf7dddd55b36ce80fbc72" + integrity sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@babel/plugin-proposal-unicode-property-regex" "^7.4.4" + "@babel/plugin-transform-dotall-regex" "^7.4.4" + "@babel/types" "^7.4.4" + esutils "^2.0.2" + +"@babel/runtime@^7.8.4": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364" + integrity sha512-RzGO0RLSdokm9Ipe/YD+7ww8X2Ro79qiXZF3HU9ljrM+qnJmH1Vqth+hbiQZy761LnMJTMitHDuKVYTk3k4dLw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@^7.10.1", "@babel/template@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.3.tgz#4d13bc8e30bf95b0ce9d175d30306f42a2c9a7b8" + integrity sha512-5BjI4gdtD+9fHZUsaxPHPNpwa+xRkDO7c7JbhYn2afvrkDu5SfAAbi9AIMXw2xEhO/BR35TqiW97IqNvCo/GqA== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + +"@babel/traverse@^7.10.1", "@babel/traverse@^7.10.3": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.3.tgz#0b01731794aa7b77b214bcd96661f18281155d7e" + integrity sha512-qO6623eBFhuPm0TmmrUFMT1FulCmsSeJuVGhiLodk2raUDFhhTECLd9E9jC4LBIWziqt4wgF6KuXE4d+Jz9yug== + dependencies: + "@babel/code-frame" "^7.10.3" + "@babel/generator" "^7.10.3" + "@babel/helper-function-name" "^7.10.3" + "@babel/helper-split-export-declaration" "^7.10.1" + "@babel/parser" "^7.10.3" + "@babel/types" "^7.10.3" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.13" + +"@babel/types@^7.10.1", "@babel/types@^7.10.3", "@babel/types@^7.4.4": + version "7.10.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.3.tgz#6535e3b79fea86a6b09e012ea8528f935099de8e" + integrity sha512-nZxaJhBXBQ8HVoIcGsf9qWep3Oh3jCENK54V4mRF7qaJabVsAYdbTtmSD8WmAp1R6ytPiu5apMwSXyxB1WlaBA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.3" + lodash "^4.17.13" + to-fast-properties "^2.0.0" + +"@erquhart/browserify-fs@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@erquhart/browserify-fs/-/browserify-fs-1.0.2.tgz#abefe016a665a2a2efa6bd52bdb549e3fc15453d" + integrity sha512-RR0NQwOPDedo1jh4xnsAsAty2MPRKgySR120il8+zubig1Sw/z8k3O65A4ZC4fvk2nLsFs2w+WjGf5cEYN9VYw== + dependencies: + level-filesystem "^1.2.0" + level-js "^4.0.0" + levelup "^4.0.0" + +"@erquhart/rollup-plugin-node-builtins@^2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@erquhart/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.5.tgz#316c1a600c31d0748b647d62fb2c5535221898ff" + integrity sha512-WoI3h31fxdGW1kaw2i+6rkUE2huKIpkgVnRDHO5QD8qAXD0Z22NdU42nd5SYfEnCLl8e54ROLMdpnMVTDdgQIw== + dependencies: + "@erquhart/browserify-fs" "^1.0.2" + buffer-es6 "^4.9.2" + crypto-browserify "^3.11.0" + process-es6 "^0.11.2" + +"@rollup/plugin-commonjs@^11.0.1": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-11.1.0.tgz#60636c7a722f54b41e419e1709df05c7234557ef" + integrity sha512-Ycr12N3ZPN96Fw2STurD21jMqzKwL9QuFhms3SD7KKRK7oaXUsBU9Zt0jL/rOPHiPYisI21/rXGO3jr9BnLHUA== + dependencies: + "@rollup/pluginutils" "^3.0.8" + commondir "^1.0.1" + estree-walker "^1.0.1" + glob "^7.1.2" + is-reference "^1.1.2" + magic-string "^0.25.2" + resolve "^1.11.0" + +"@rollup/plugin-json@^4.0.1": + version "4.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" + integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== + dependencies: + "@rollup/pluginutils" "^3.0.8" + +"@rollup/plugin-replace@^2.3.0": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.3.3.tgz#cd6bae39444de119f5d905322b91ebd4078562e7" + integrity sha512-XPmVXZ7IlaoWaJLkSCDaa0Y6uVo5XQYHhiMFzOd5qSv5rE+t/UJToPIOE56flKIxBFQI27ONsxb7dqHnwSsjKQ== + dependencies: + "@rollup/pluginutils" "^3.0.8" + magic-string "^0.25.5" + +"@rollup/pluginutils@^3.0.8": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" + integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== + dependencies: + "@types/estree" "0.0.39" + estree-walker "^1.0.1" + picomatch "^2.2.2" + +"@types/babel-types@*", "@types/babel-types@^7.0.0": + version "7.0.7" + resolved "https://registry.yarnpkg.com/@types/babel-types/-/babel-types-7.0.7.tgz#667eb1640e8039436028055737d2b9986ee336e3" + integrity sha512-dBtBbrc+qTHy1WdfHYjBwRln4+LWqASWakLHsWHR2NWHIFkv4W3O070IGoGLEBrJBvct3r0L1BUPuvURi7kYUQ== + +"@types/babylon@^6.16.2": + version "6.16.5" + resolved "https://registry.yarnpkg.com/@types/babylon/-/babylon-6.16.5.tgz#1c5641db69eb8cdf378edd25b4be7754beeb48b4" + integrity sha512-xH2e58elpj1X4ynnKp9qSnWlsRTIs6n3tgLGNfwAGHwePw0mulHQllV34n0T25uYSu1k0hRKkWXF890B1yS47w== + dependencies: + "@types/babel-types" "*" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + +"@types/estree@*": + version "0.0.45" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884" + integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g== + +"@types/estree@0.0.39": + version "0.0.39" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" + integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= + +"@types/node@*": + version "14.0.14" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.0.14.tgz#24a0b5959f16ac141aeb0c5b3cd7a15b7c64cbce" + integrity sha512-syUgf67ZQpaJj01/tRTknkMNoBBLWJOBODF0Zm4NrXmiSuxjymFrxnTu1QVYRubhVkRcZLYZG8STTwJRdVm/WQ== + +"@types/resolve@0.0.8": + version "0.0.8" + resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-0.0.8.tgz#f26074d238e02659e323ce1a13d041eee280e194" + integrity sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ== + dependencies: + "@types/node" "*" + +"@vue/component-compiler-utils@^2.6.0": + version "2.6.0" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz#aa46d2a6f7647440b0b8932434d22f12371e543b" + integrity sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.14" + postcss-selector-parser "^5.0.0" + prettier "1.16.3" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + +"@vue/component-compiler-utils@^3.0.0", "@vue/component-compiler-utils@^3.1.2": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@vue/component-compiler-utils/-/component-compiler-utils-3.1.2.tgz#8213a5ff3202f9f2137fe55370f9e8b9656081c3" + integrity sha512-QLq9z8m79mCinpaEeSURhnNCN6djxpHw0lpP/bodMlt5kALfONpryMthvnrQOlTcIKoF+VoPi+lPHUYeDFPXug== + dependencies: + consolidate "^0.15.1" + hash-sum "^1.0.2" + lru-cache "^4.1.2" + merge-source-map "^1.1.0" + postcss "^7.0.14" + postcss-selector-parser "^6.0.2" + source-map "~0.6.1" + vue-template-es2015-compiler "^1.9.0" + optionalDependencies: + prettier "^1.18.2" + +"@vue/component-compiler@^4.2.3": + version "4.2.3" + resolved "https://registry.yarnpkg.com/@vue/component-compiler/-/component-compiler-4.2.3.tgz#052855aea0f9a00eb0eb9786bdf447d29292ae37" + integrity sha512-B221AV3T/6PF37WnkoqUKIxBeHXmGuZsi/8pby89MAVSj9zmDdLCEZ7LDT8+DJWbElFrPELgnSvEadXxDRcrJQ== + dependencies: + "@vue/component-compiler-utils" "^3.0.0" + clean-css "^4.1.11" + hash-sum "^1.0.2" + postcss-modules-sync "^1.0.0" + source-map "0.6.*" + optionalDependencies: + less "^3.9.0" + pug "^2.0.3" + sass "^1.18.0" + stylus "^0.54.5" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abstract-leveldown@~6.0.1: + version "6.0.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.0.3.tgz#b4b6159343c74b0c5197b2817854782d8f748c4a" + integrity sha512-jzewKKpZbaYUa6HTThnrl+GrJhzjEAeuc7hTVpZdzg7kupXZFoqQDFwyOwLNbmJKJlmzw8yiipMPkDiuKkT06Q== + dependencies: + level-concat-iterator "~2.0.0" + xtend "~4.0.0" + +abstract-leveldown@~6.2.1: + version "6.2.3" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz#036543d87e3710f2528e47040bc3261b77a9a8eb" + integrity sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ== + dependencies: + buffer "^5.5.0" + immediate "^3.2.3" + level-concat-iterator "~2.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +acorn-bigint@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/acorn-bigint/-/acorn-bigint-0.4.0.tgz#af3245ed8a7c3747387fca4680ae1960f617c4cd" + integrity sha512-W9iaqWzqFo7ZBLmI9dMjHYGrN0Nm/ZgToqhvd3RELJux7RsX6k1/80h+bD9TtTpeKky/kYNbr3+vHWqI3hdyfA== + +acorn-class-fields@^0.3.1: + version "0.3.6" + resolved "https://registry.yarnpkg.com/acorn-class-fields/-/acorn-class-fields-0.3.6.tgz#e45916dcd95c3d7faad1c811e3abd818defe14d9" + integrity sha512-nOzMl1byCFAJLgxNUG7QorpzRHWlkBKVSSOMKUu+bVbVZG5lU4NZkOp/uA7CnE+NAsWhmxTsMgQdHsQXUO8Ulg== + dependencies: + acorn-private-class-elements "^0.2.6" + +acorn-dynamic-import@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz#482210140582a36b83c3e342e1cfebcaa9240948" + integrity sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw== + +acorn-export-ns-from@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/acorn-export-ns-from/-/acorn-export-ns-from-0.1.0.tgz#192687869bba3bcb2ef1a1ba196486ea7e100e5c" + integrity sha512-QDQJBe2DfxNBIMxs+19XY2i/XXilJn+kPgX30HWNYK4IXoNj3ACNSWPU7szL0SzqjFyOG4zoZxG9P7JfNw5g7A== + +acorn-globals@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-3.1.0.tgz#fd8270f71fbb4996b004fa880ee5d46573a731bf" + integrity sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8= + dependencies: + acorn "^4.0.4" + +acorn-import-meta@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/acorn-import-meta/-/acorn-import-meta-1.1.0.tgz#c384423462ee7d4721d4de83231021a36cb09def" + integrity sha512-pshgiVR5mhpjFVdizKTN+kAGRqjJFUOEB3TvpQ6kiAutb1lvHrIVVcGoe5xzMpJkVNifCeymMG7/tsDkWn8CdQ== + +acorn-jsx@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" + integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== + +acorn-logical-assignment@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/acorn-logical-assignment/-/acorn-logical-assignment-0.1.3.tgz#4c81ec136994e4b505e2de42636c923722e88377" + integrity sha512-tLFK3+HWerA2rAJaY02LRtDeO0/nwgw6Wn1EZwO8cNZRbZiwBxKo4V5rJEoVSfBvEqXo44JaiA2Q9ycYx+y7qQ== + +acorn-numeric-separator@^0.3.0: + version "0.3.3" + resolved "https://registry.yarnpkg.com/acorn-numeric-separator/-/acorn-numeric-separator-0.3.3.tgz#1002e3c3e68540449131370b81078b3fc36a4b18" + integrity sha512-xMbqqXR9EnxuGN1N6CbU+sm/sKS+VSttTnU6aRf9klvZF/P5E5BMtR3xZfSFWbVIkd4uXGKfgZJZwZ73zpExXQ== + +acorn-private-class-elements@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/acorn-private-class-elements/-/acorn-private-class-elements-0.2.6.tgz#625155cbf4d42ce1f8063db8c9b88adfdd8db2c5" + integrity sha512-PV+AhOU1/vCx5zIBgGYLB5+OoT8IPKZUcWEGdLBTQgFBMMzPM9S5SKSG4EdiuULqoq3pV3C07rGuSC1Y5gbi/g== + +acorn-private-methods@^0.3.0: + version "0.3.2" + resolved "https://registry.yarnpkg.com/acorn-private-methods/-/acorn-private-methods-0.3.2.tgz#4a0b311607444157efc3180210d3a909673f6469" + integrity sha512-jTgRNDbEkbtxOIPUmDZ4u4oDGCO4tNPDNeW+jJrkbLl/Hzl9EVLva+kGQ289irSPhxi7FI9TjuXmIiqjnJcj9w== + dependencies: + acorn-private-class-elements "^0.2.6" + +acorn-stage3@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/acorn-stage3/-/acorn-stage3-2.1.0.tgz#63ffe0f00b8ac7ccdce34ce82b3b9a6777af390a" + integrity sha512-6R3IWwmMl1MBYf6JtaquuE8OqtCArA1zaDlY7QUeUNDcUzNJoZJm1nFQrv0SzdjkRv1khADbMfucFsF661LGow== + dependencies: + acorn-bigint "^0.4.0" + acorn-class-fields "^0.3.1" + acorn-dynamic-import "^4.0.0" + acorn-export-ns-from "^0.1.0" + acorn-import-meta "^1.0.0" + acorn-logical-assignment "^0.1.0" + acorn-numeric-separator "^0.3.0" + acorn-private-methods "^0.3.0" + acorn-static-class-features "^0.2.0" + +acorn-static-class-features@^0.2.0: + version "0.2.3" + resolved "https://registry.yarnpkg.com/acorn-static-class-features/-/acorn-static-class-features-0.2.3.tgz#c59e17c81afa28d6fc140d2ab1429e3eaea5dd66" + integrity sha512-N7yRI9NduTJRam3BQTXHLR63ykHQv2MnxWTRq0+4PfQosGUz/tM0/ToRqWUqGphP960mDTm/7zJFx3dB/AZtiw== + dependencies: + acorn-private-class-elements "^0.2.6" + +acorn-walk@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" + integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== + +acorn@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" + integrity sha1-ReN/s56No/JbruP/U2niu18iAXo= + +acorn@^4.0.4, acorn@~4.0.2: + version "4.0.13" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" + integrity sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c= + +acorn@^5.7.3: + version "5.7.4" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.7.4.tgz#3e8d8a9947d0599a1796d10225d7432f4a4acf5e" + integrity sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg== + +acorn@^6.4.1: + version "6.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" + integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== + +acorn@^7.1.0, acorn@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.3.1.tgz#85010754db53c3fbaf3b9ea3e083aa5c5d147ffd" + integrity sha512-tLc0wSnatxAQHVHUapaHdz72pi9KUyHjq5KyHjGg9Y8Ifdc79pTh2XvI6I1/chZbnM7QtNKzh66ooDogPZSleA== + +ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +ansi-align@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.0.tgz#b536b371cf687caaef236c18d3e21fe3797467cb" + integrity sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw== + dependencies: + string-width "^3.0.0" + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^1.0.7, argparse@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +array-includes@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.1.tgz#cdd67e6852bdf9c1215460786732255ed2459348" + integrity sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0" + is-string "^1.0.5" + +array.prototype.flat@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz#0de82b426b0318dbfdb940089e38b043d37f6c7b" + integrity sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + +asap@~2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= + +asn1.js@^4.0.0: + version "4.10.1" + resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" + integrity sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw== + dependencies: + bn.js "^4.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +asn1@~0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" + integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU= + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +astral-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= + +aws4@^1.8.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== + +axios@^0.19.0: + version "0.19.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27" + integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA== + dependencies: + follow-redirects "1.5.10" + +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + +babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + integrity sha1-llxwWGaOgrVde/4E/yM3vItWR/4= + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + integrity sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc= + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.15.0, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + integrity sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +base64-js@^1.0.2: + version "1.3.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" + integrity sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4= + dependencies: + tweetnacl "^0.14.3" + +big.js@^3.1.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" + integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== + +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== + +bluebird@^3.1.1: + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== + +boolbase@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= + +boxen@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-4.2.0.tgz#e411b62357d6d6d36587c8ac3d5d974daa070e64" + integrity sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^5.3.1" + chalk "^3.0.0" + cli-boxes "^2.2.0" + string-width "^4.1.0" + term-size "^2.1.0" + type-fest "^0.8.1" + widest-line "^3.1.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +brorand@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8= + +brotli-size@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/brotli-size/-/brotli-size-4.0.0.tgz#a05ee3faad3c0e700a2f2da826ba6b4d76e69e5e" + integrity sha512-uA9fOtlTRC0iqKfzff1W34DXUA3GyVqbUaeo3Rw3d4gd1eavKVCETXrn3NzO74W+UVkG3UHu8WxUi+XvKI/huA== + dependencies: + duplexer "0.1.1" + +browserify-aes@^1.0.0, browserify-aes@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +browserify-cipher@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0" + integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w== + dependencies: + browserify-aes "^1.0.4" + browserify-des "^1.0.0" + evp_bytestokey "^1.0.0" + +browserify-des@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c" + integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A== + dependencies: + cipher-base "^1.0.1" + des.js "^1.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" + integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= + dependencies: + bn.js "^4.1.0" + randombytes "^2.0.1" + +browserify-sign@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +browserslist@^4.12.0, browserslist@^4.8.5: + version "4.12.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.2.tgz#76653d7e4c57caa8a1a28513e2f4e197dc11a711" + integrity sha512-MfZaeYqR8StRZdstAK9hCKDd2StvePCYp5rHzQCPicUjfFliDgmuaBNPHYUTpAywBN8+Wc/d7NYVFkO0aqaBUw== + dependencies: + caniuse-lite "^1.0.30001088" + electron-to-chromium "^1.3.483" + escalade "^3.0.1" + node-releases "^1.1.58" + +buffer-es6@^4.9.2, buffer-es6@^4.9.3: + version "4.9.3" + resolved "https://registry.yarnpkg.com/buffer-es6/-/buffer-es6-4.9.3.tgz#f26347b82df76fd37e18bcb5288c4970cfd5c404" + integrity sha1-8mNHuC33b9N+GLy1KIxJcM/VxAQ= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk= + +buffer@^5.5.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.6.0.tgz#a31749dc7d81d84db08abf937b6b8c4033f62786" + integrity sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw== + dependencies: + base64-js "^1.0.2" + ieee754 "^1.1.4" + +builtin-modules@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.1.0.tgz#aad97c15131eb76b65b50ef208e7584cd76a7484" + integrity sha512-k0KL0aWZuBt2lrxrcASWDfwOLMnodeQjodT/1SxEQAXsHANgo6ZC/VEaSEHCXt7aSTZ4/4H5LKa+tBXmW7Vtvw== + +buntis@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/buntis/-/buntis-0.2.1.tgz#a043aabc7d64f2243bfaa53e34e999c2dd790e82" + integrity sha512-5wszfQlsqJmZrfxpPkO5yQcEoBAmfUYlXxXU/IM6PhPZ8DMnMMJQ9rvAHfe5WZmnB6E1IoJYylFfTaf1e2FJbQ== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" + integrity sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk= + +camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +caniuse-lite@^1.0.30001088: + version "1.0.30001090" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001090.tgz#ff7766332f60e80fea4903f30d360622e5551850" + integrity sha512-QzPRKDCyp7RhjczTPZaqK3CjPA5Ht2UnXhZhCI4f7QiB5JK6KEuZBxIzyWnB3wO4hgAj4GMRxAhuiacfw0Psjg== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw= + +center-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +chai@^4.1.2: + version "4.2.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.2.0.tgz#760aa72cf20e3795e84b12877ce0e83737aa29e5" + integrity sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + pathval "^1.1.0" + type-detect "^4.0.5" + +chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" + integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +character-parser@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/character-parser/-/character-parser-2.2.0.tgz#c7ce28f36d4bcd9744e5ffc2c5fcde1c73261fc0" + integrity sha1-x84o821LzZdE5f/CxfzeHHMmH8A= + dependencies: + is-regex "^1.0.3" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha1-V00xLt2Iu13YkS6Sht1sCu1KrII= + +cheerio@^1.0.0-rc.3: + version "1.0.0-rc.3" + resolved "https://registry.yarnpkg.com/cheerio/-/cheerio-1.0.0-rc.3.tgz#094636d425b2e9c0f4eb91a46c05630c9a1a8bf6" + integrity sha512-0td5ijfUPuubwLUu0OBoe98gZj8C/AA+RW3v67GPlGOrvxWjZmBXiBCRU+I8VEiNyJzjth40POfHiz2RB3gImA== + dependencies: + css-select "~1.2.0" + dom-serializer "~0.1.1" + entities "~1.1.1" + htmlparser2 "^3.9.1" + lodash "^4.15.0" + parse5 "^3.0.1" + +child_process@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/child_process/-/child_process-1.0.2.tgz#b1f7e7fc73d25e7fd1d455adc94e143830182b5a" + integrity sha1-sffn/HPSXn/R1FWtyU4UODAYK1o= + +"chokidar@>=2.0.0 <4.0.0": + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +clean-css@^4.1.11: + version "4.2.3" + resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" + integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== + dependencies: + source-map "~0.6.0" + +cli-boxes@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.0.tgz#538ecae8f9c6ca508e3c3c95b453fe93cb4c168d" + integrity sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^2.0.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" + integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + +cliui@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" + integrity sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE= + dependencies: + center-align "^0.1.1" + right-align "^0.1.1" + wordwrap "0.0.2" + +clone@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +clone@~0.1.9: + version "0.1.19" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.1.19.tgz#613fb68639b26a494ac53253e15b1a6bd88ada85" + integrity sha1-YT+2hjmyaklKxTJT4Vsaa9iK2oU= + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@^1.3.3: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.19.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +concat-stream@^1.4.4: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +config-chain@^1.1.12: + version "1.1.12" + resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" + integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== + dependencies: + ini "^1.3.4" + proto-list "~1.2.1" + +consolidate@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/consolidate/-/consolidate-0.15.1.tgz#21ab043235c71a07d45d9aad98593b0dba56bab7" + integrity sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw== + dependencies: + bluebird "^3.1.1" + +constantinople@^3.0.1, constantinople@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/constantinople/-/constantinople-3.1.2.tgz#d45ed724f57d3d10500017a7d3a889c1381ae647" + integrity sha512-yePcBqEFhLOqSBtwYOGGS1exHo/s1xjekXiinh4itpNQGCu4KA1euPh1fg07N2wMITZXQkBz75Ntdt1ctGZouw== + dependencies: + "@types/babel-types" "^7.0.0" + "@types/babylon" "^6.16.2" + babel-types "^6.26.0" + babylon "^6.18.0" + +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + +convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + dependencies: + safe-buffer "~5.1.1" + +core-js-compat@^3.6.2: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== + dependencies: + browserslist "^4.8.5" + semver "7.0.0" + +core-js@3: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + +core-js@^2.4.0: + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + +core-util-is@1.0.2, core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +create-ecdh@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.3.tgz#c9111b6f33045c4697f144787f9254cdc77c45ff" + integrity sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw== + dependencies: + bn.js "^4.1.0" + elliptic "^6.0.0" + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +cross-env@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-6.0.3.tgz#4256b71e49b3a40637a0ce70768a6ef5c72ae941" + integrity sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag== + dependencies: + cross-spawn "^7.0.0" + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +cross-spawn@^7.0.0: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +crypto-browserify@^3.11.0: + version "3.12.0" + resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" + integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg== + dependencies: + browserify-cipher "^1.0.0" + browserify-sign "^4.0.0" + create-ecdh "^4.0.0" + create-hash "^1.1.0" + create-hmac "^1.1.0" + diffie-hellman "^5.0.0" + inherits "^2.0.1" + pbkdf2 "^3.0.3" + public-encrypt "^4.0.0" + randombytes "^2.0.0" + randomfill "^1.0.3" + +css-parse@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/css-parse/-/css-parse-2.0.0.tgz#a468ee667c16d81ccf05c58c38d2a97c780dbfd4" + integrity sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q= + dependencies: + css "^2.0.0" + +css-select@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-1.2.0.tgz#2b3a110539c5355f1cd8d314623e870b121ec858" + integrity sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg= + dependencies: + boolbase "~1.0.0" + css-what "2.1" + domutils "1.5.1" + nth-check "~1.0.1" + +css-selector-tokenizer@^0.7.0: + version "0.7.2" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.2.tgz#11e5e27c9a48d90284f22d45061c303d7a25ad87" + integrity sha512-yj856NGuAymN6r8bn8/Jl46pR+OC3eEvAhfGYDUe7YPtTPAYrSSw4oAniZ9Y8T5B92hjhwTBLUen0/vKPxf6pw== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + regexpu-core "^4.6.0" + +css-what@2.1: + version "2.1.3" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" + integrity sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg== + +css@^2.0.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/css/-/css-2.2.4.tgz#c646755c73971f2bba6a601e2cf2fd71b1298929" + integrity sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw== + dependencies: + inherits "^2.0.3" + source-map "^0.6.1" + source-map-resolve "^0.5.2" + urix "^0.1.0" + +cssesc@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-2.0.0.tgz#3b13bd1bb1cb36e1bcb5a4dcd27f54c5dcb35703" + integrity sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA= + dependencies: + assert-plus "^1.0.0" + +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + +debounce@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" + integrity sha512-mYtLl1xfZLi1m4RtQYlZgJUNQjl4ZxVnHzIR8nLLgi4q1YT8o/WM+MK/f8yfcc9s5Ir5zRaPZyZU6xs1Syoocg== + +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^2.6.9: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== + dependencies: + ms "^2.1.1" + +decamelize@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-is@~0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +deferred-leveldown@~5.3.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz#27a997ad95408b61161aa69bd489b86c71b78058" + integrity sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw== + dependencies: + abstract-leveldown "~6.2.1" + inherits "^2.0.3" + +define-properties@^1.1.2, define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +des.js@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.1.tgz#5382142e1bdc53f85d86d53e5f4aa7deb91e0843" + integrity sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA== + dependencies: + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + +diffie-hellman@^5.0.0: + version "5.0.3" + resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875" + integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg== + dependencies: + bn.js "^4.1.0" + miller-rabin "^4.0.0" + randombytes "^2.0.0" + +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +doctypes@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/doctypes/-/doctypes-1.1.0.tgz#ea80b106a87538774e8a3a4a5afe293de489e0a9" + integrity sha1-6oCxBqh1OHdOijpKWv4pPeSJ4Kk= + +dom-serializer@0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" + integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== + dependencies: + domelementtype "^2.0.1" + entities "^2.0.0" + +dom-serializer@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.1.1.tgz#1ec4059e284babed36eec2941d4a970a189ce7c0" + integrity sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA== + dependencies: + domelementtype "^1.3.0" + entities "^1.1.1" + +domelementtype@1, domelementtype@^1.3.0, domelementtype@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" + integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== + +domelementtype@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" + integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== + +domhandler@^2.3.0: + version "2.4.2" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" + integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== + dependencies: + domelementtype "1" + +domutils@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf" + integrity sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8= + dependencies: + dom-serializer "0" + domelementtype "1" + +domutils@^1.5.1: + version "1.7.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" + integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== + dependencies: + dom-serializer "0" + domelementtype "1" + +duplexer@0.1.1, duplexer@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.1.tgz#ace6ff808c1ce66b57d1ebf97977acb02334cfc1" + integrity sha1-rOb/gIwc5mtX0ev5eXessCM0z8E= + +easygettext@^2.7.0: + version "2.13.0" + resolved "https://registry.yarnpkg.com/easygettext/-/easygettext-2.13.0.tgz#32318e349087b17b2efe04b99ebd653f86192c75" + integrity sha512-VBeI1VDyX6QLWFhxy3sMAoQDHypjL52LuZtn+Rd8ISJm+oh2FmJzEK4JPqoTqQoD13ilTzM3V0Ie6+4fUXPEXA== + dependencies: + "@vue/component-compiler-utils" "^2.6.0" + acorn "^6.4.1" + acorn-stage3 "^2.0.0" + acorn-walk "^6.2.0" + buntis "0.2.1" + cheerio "^1.0.0-rc.3" + estree-walker "^2.0.1" + flow-remove-types "^1.2.3" + minimist "^1.2.5" + pofile "^1.1.0" + pug "^2.0.4" + vue-template-compiler "^2.6.10" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk= + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +editorconfig@^0.15.3: + version "0.15.3" + resolved "https://registry.yarnpkg.com/editorconfig/-/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" + integrity sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g== + dependencies: + commander "^2.19.0" + lru-cache "^4.1.5" + semver "^5.6.0" + sigmund "^1.0.1" + +electron-to-chromium@^1.3.483: + version "1.3.483" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.483.tgz#9269e7cfc1c8e72709824da171cbe47ca5e3ca9e" + integrity sha512-+05RF8S9rk8S0G8eBCqBRBaRq7+UN3lDs2DAvnG8SBSgQO3hjy0+qt4CmRk5eiuGbTcaicgXfPmBi31a+BD3lg== + +elliptic@^6.0.0, elliptic@^6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.3.tgz#cb59eb2efdaf73a0bd78ccd7015a62ad6e0f93d6" + integrity sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw== + dependencies: + bn.js "^4.4.0" + brorand "^1.0.1" + hash.js "^1.0.0" + hmac-drbg "^1.0.0" + inherits "^2.0.1" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.0" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" + integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= + +entities@^1.1.1, entities@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" + integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== + +entities@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" + integrity sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ== + +errno@^0.1.1, errno@~0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.7.tgz#4684d71779ad39af177e3f007996f7c67c852618" + integrity sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg== + dependencies: + prr "~1.0.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.17.0, es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: + version "1.17.6" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" + integrity sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw== + dependencies: + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.0" + is-regex "^1.1.0" + object-inspect "^1.7.0" + object-keys "^1.1.1" + object.assign "^4.1.0" + string.prototype.trimend "^1.0.1" + string.prototype.trimstart "^1.0.1" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + +escalade@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.0.1.tgz#52568a77443f6927cd0ab9c73129137533c965ed" + integrity sha512-DR6NO3h9niOT+MZs7bjxlj2a1k+POu5RN8CLTPX2+i78bRi9eLe7+0zXgUHMnGXWybYcL61E9hGhPKqedy8tQA== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-config-standard@^14.1.0: + version "14.1.1" + resolved "https://registry.yarnpkg.com/eslint-config-standard/-/eslint-config-standard-14.1.1.tgz#830a8e44e7aef7de67464979ad06b406026c56ea" + integrity sha512-Z9B+VR+JIXRxz21udPTL9HpFMyoMUEeX1G251EQ6e05WD9aPVtVBn09XUmZ259wCMlCDmYDSZG62Hhm+ZTJcUg== + +eslint-import-resolver-node@^0.3.3: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-es@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz#75a7cdfdccddc0589934aeeb384175f221c57893" + integrity sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ== + dependencies: + eslint-utils "^2.0.0" + regexpp "^3.0.0" + +eslint-plugin-import@^2.17.3: + version "2.22.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.0.tgz#92f7736fe1fde3e2de77623c838dd992ff5ffb7e" + integrity sha512-66Fpf1Ln6aIS5Gr/55ts19eUuoDhAbZgnr6UxK5hbDx6l/QgQgx61AePq+BV4PP2uXQFClgMVzep5zZ94qqsxg== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.3" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-node@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-node/-/eslint-plugin-node-11.0.0.tgz#365944bb0804c5d1d501182a9bc41a0ffefed726" + integrity sha512-chUs/NVID+sknFiJzxoN9lM7uKSOEta8GC8365hw1nDfwIPIjjpRSwwPvQanWv8dt/pDe9EV4anmVSwdiSndNg== + dependencies: + eslint-plugin-es "^3.0.0" + eslint-utils "^2.0.0" + ignore "^5.1.1" + minimatch "^3.0.4" + resolve "^1.10.1" + semver "^6.1.0" + +eslint-plugin-promise@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-4.2.1.tgz#845fd8b2260ad8f82564c1222fce44ad71d9418a" + integrity sha512-VoM09vT7bfA7D+upt+FjeBO5eHIJQBUWki1aPvB+vbNiHS3+oGIJGIeyBtKQTME6UPXXy3vV07OL1tHd3ANuDw== + +eslint-plugin-standard@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4" + integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ== + +eslint-plugin-vue@^6.1.2: + version "6.2.2" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-6.2.2.tgz#27fecd9a3a24789b0f111ecdd540a9e56198e0fe" + integrity sha512-Nhc+oVAHm0uz/PkJAWscwIT4ijTrK5fqNqz9QB1D35SbbuMG1uB6Yr5AJpvPSWg+WOw7nYNswerYh0kOk64gqQ== + dependencies: + natural-compare "^1.4.0" + semver "^5.6.0" + vue-eslint-parser "^7.0.0" + +eslint-scope@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.0.tgz#d0f971dfe59c69e0cada684b23d49dbf82600ce5" + integrity sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w== + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.4.3: + version "1.4.3" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" + integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-utils@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint@6.8.0, eslint@^6.0.0: + version "6.8.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-6.8.0.tgz#62262d6729739f9275723824302fb227c8c93ffb" + integrity sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig== + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^5.0.0" + eslint-utils "^1.4.3" + eslint-visitor-keys "^1.1.0" + espree "^6.1.2" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + inquirer "^7.0.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.3.0" + lodash "^4.17.14" + minimatch "^3.0.4" + mkdirp "^0.5.1" + natural-compare "^1.4.0" + optionator "^0.8.3" + progress "^2.0.0" + regexpp "^2.0.1" + semver "^6.1.2" + strip-ansi "^5.2.0" + strip-json-comments "^3.0.1" + table "^5.2.3" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^6.1.2, espree@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.1.tgz#77fc72e1fd744a2052c20f38a5b575832e82734a" + integrity sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw== + dependencies: + acorn "^7.1.1" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.1.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.0.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" + integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== + dependencies: + estraverse "^4.1.0" + +estraverse@^4.1.0, estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" + integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== + +estree-walker@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.5.2.tgz#d3850be7529c9580d815600b53126515e146dd39" + integrity sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig== + +estree-walker@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" + integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== + +estree-walker@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" + integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== + +estree-walker@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.1.tgz#f8e030fb21cefa183b44b7ad516b747434e7a3e0" + integrity sha512-tF0hv+Yi2Ot1cwj9eYHtxC0jB9bmjacjQs6ZBTj82H8JwUywFuc+7E83NWfNMwHXZc11mjfFcVXPe9gEP4B8dg== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU= + +extsprintf@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" + integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= + +fast-deep-equal@^3.1.1: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g== + dependencies: + flat-cache "^2.0.1" + +filesize@^4.1.2: + version "4.2.1" + resolved "https://registry.yarnpkg.com/filesize/-/filesize-4.2.1.tgz#ab1cb2069db5d415911c1a13e144c0e743bc89bc" + integrity sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA== + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA== + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.2.tgz#4575b21e2bcee7434aa9be662f4b7b5f9c2b5138" + integrity sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA== + +flow-remove-types@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/flow-remove-types/-/flow-remove-types-1.2.3.tgz#6131aefc7da43364bb8b479758c9dec7735d1a18" + integrity sha512-ypq/U3V+t9atYiOuSJd40tekCra03EHKoRsiK/wXGrsZimuum0kdwVY7Yv0HTaoXgHW1WiayomYd+Q3kkvPl9Q== + dependencies: + babylon "^6.15.0" + vlq "^0.2.1" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +foreach@~2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" + integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fs@0.0.1-security: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/fs/-/fs-0.0.1-security.tgz#8a7bd37186b6dddf3813f23858b57ecaaf5e41d4" + integrity sha1-invTcYa23d84E/I4WLV+yq9eQdQ= + +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +fwd-stream@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/fwd-stream/-/fwd-stream-1.0.4.tgz#ed281cabed46feecf921ee32dc4c50b372ac7cfa" + integrity sha1-7Sgcq+1G/uz5Ie4y3ExQs3KsfPo= + dependencies: + readable-stream "~1.0.26-4" + +generic-names@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/generic-names/-/generic-names-1.0.3.tgz#2d786a121aee508876796939e8e3bff836c20917" + integrity sha1-LXhqEhruUIh2eWk56OO/+DbCCRc= + dependencies: + loader-utils "^0.2.16" + +gensync@^1.0.0-beta.1: + version "1.0.0-beta.1" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" + integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo= + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== + dependencies: + is-glob "^4.0.1" + +glob@^7.1.2, glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +graceful-fs@^4.1.2: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== + +gzip-size@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-5.1.1.tgz#cb9bee692f87c0612b232840a873904e4c135274" + integrity sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA== + dependencies: + duplexer "^0.1.1" + pify "^4.0.1" + +handlebars@^4.0.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= + +har-validator@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" + integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + dependencies: + ajv "^6.5.5" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.0, has-symbols@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" + integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash-sum@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/hash-sum/-/hash-sum-1.0.2.tgz#33b40777754c6432573c120cc3808bbd10d47f04" + integrity sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ= + +hash.js@^1.0.0, hash.js@^1.0.3: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +he@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +hmac-drbg@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha1-0nRXAQJabHdabFRXk+1QL8DGSaE= + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +htmlparser2@^3.9.1: + version "3.10.1" + resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" + integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== + dependencies: + domelementtype "^1.3.1" + domhandler "^2.3.0" + domutils "^1.5.1" + entities "^1.1.1" + inherits "^2.0.1" + readable-stream "^3.1.1" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE= + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +icss-replace-symbols@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz#06ea6f83679a7749e386cfe1fe812ae5db223ded" + integrity sha1-Bupvg2ead0njhs/h/oEq5dsiPe0= + +ieee754@^1.1.4: + version "1.1.13" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.13.tgz#ec168558e95aa181fd87d37f55c32bbcb6708b84" + integrity sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg== + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +ignore@^5.1.1: + version "5.1.8" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57" + integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w= + +immediate@^3.2.3: + version "3.3.0" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.3.0.tgz#1aef225517836bcdf7f2a2de2600c79ff0269266" + integrity sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q== + +immediate@~3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" + integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= + +import-fresh@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + +indexof@~0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" + integrity sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= + +ini@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +inquirer@^7.0.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.2.0.tgz#63ce99d823090de7eb420e4bb05e6f3449aa389a" + integrity sha512-E0c4rPwr9ByePfNlTIB8z51kK1s2n6jrHuJeEHENl/sbq2G/S1auvibgEwNR4uSyiU+PiYHqSwsgGiXjG8p5ZQ== + dependencies: + ansi-escapes "^4.2.1" + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.15" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.5.3" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +invariant@^2.2.2, invariant@^2.2.4: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== + dependencies: + loose-envify "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-callable@^1.1.4, is-callable@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" + integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== + +is-date-object@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" + integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== + +is-expression@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-expression/-/is-expression-3.0.0.tgz#39acaa6be7fd1f3471dc42c7416e61c24317ac9f" + integrity sha1-Oayqa+f9HzRx3ELHQW5hwkMXrJ8= + dependencies: + acorn "~4.0.2" + object-assign "^4.0.1" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" + integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-object@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-0.1.2.tgz#00efbc08816c33cfc4ac8251d132e10dc65098d7" + integrity sha1-AO+8CIFsM8/ErIJR0TLhDcZQmNc= + +is-promise@^2.0.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.2.2.tgz#39ab959ccbf9a774cf079f7b40c7a26f763135f1" + integrity sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ== + +is-reference@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" + integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== + dependencies: + "@types/estree" "*" + +is-regex@^1.0.3, is-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.0.tgz#ece38e389e490df0dc21caea2bd596f987f767ff" + integrity sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw== + dependencies: + has-symbols "^1.0.1" + +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +is@~0.2.6: + version "0.2.7" + resolved "https://registry.yarnpkg.com/is/-/is-0.2.7.tgz#3b34a2c48f359972f35042849193ae7264b63562" + integrity sha1-OzSixI81mXLzUEKEkZOucmS2NWI= + +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8= + +isarray@^1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= + +jest-worker@^24.9.0: + version "24.9.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" + integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== + dependencies: + merge-stream "^2.0.0" + supports-color "^6.1.0" + +js-base64@^2.1.9: + version "2.6.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.6.2.tgz#cf9301bc5cc756892a9a6c8d7138322e5944fb0d" + integrity sha512-1hgLrLIrmCgZG+ID3VoLNLOSwjGnoZa8tyrUdEteMeIzsT6PH7PMLyUvbDwzNE56P3PNxyvuIOx4Uh2E5rzQIw== + +js-beautify@^1.6.12: + version "1.11.0" + resolved "https://registry.yarnpkg.com/js-beautify/-/js-beautify-1.11.0.tgz#afb873dc47d58986360093dcb69951e8bcd5ded2" + integrity sha512-a26B+Cx7USQGSWnz9YxgJNMmML/QG2nqIaL7VVYPCXbqiKz8PN0waSNvroMtvAK6tY7g/wPdNWGEP+JTNIBr6A== + dependencies: + config-chain "^1.1.12" + editorconfig "^0.15.3" + glob "^7.1.3" + mkdirp "~1.0.3" + nopt "^4.0.3" + +js-stringify@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db" + integrity sha1-Fzb939lyTyijaCrcYjCufk6Weds= + +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" + integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + integrity sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0= + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema@0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" + integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= + +json5@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" + integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= + +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" + integrity sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA== + dependencies: + minimist "^1.2.5" + +jsprim@^1.2.2: + version "1.4.1" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2" + integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI= + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.2.3" + verror "1.10.0" + +jstransformer@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/jstransformer/-/jstransformer-1.0.0.tgz#ed8bf0921e2f3f1ed4d5c1a44f68709ed24722c3" + integrity sha1-7Yvwkh4vPx7U1cGkT2hwntJHIsM= + dependencies: + is-promise "^2.0.0" + promise "^7.0.1" + +kind-of@^3.0.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +lazy-cache@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +less@^3.9.0: + version "3.11.3" + resolved "https://registry.yarnpkg.com/less/-/less-3.11.3.tgz#2d853954fcfe0169a8af869620bcaa16563dcc1c" + integrity sha512-VkZiTDdtNEzXA3LgjQiC3D7/ejleBPFVvq+aRI9mIj+Zhmif5TvFPM244bT4rzkvOCvJ9q4zAztok1M7Nygagw== + dependencies: + clone "^2.1.2" + tslib "^1.10.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + promise "^7.1.1" + request "^2.83.0" + source-map "~0.6.0" + +level-blobs@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/level-blobs/-/level-blobs-0.1.7.tgz#9ab9b97bb99f1edbf9f78a3433e21ed56386bdaf" + integrity sha1-mrm5e7mfHtv594o0M+Ie1WOGva8= + dependencies: + level-peek "1.0.6" + once "^1.3.0" + readable-stream "^1.0.26-4" + +level-concat-iterator@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz#1d1009cf108340252cb38c51f9727311193e6263" + integrity sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw== + +level-errors@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/level-errors/-/level-errors-2.0.1.tgz#2132a677bf4e679ce029f517c2f17432800c05c8" + integrity sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw== + dependencies: + errno "~0.1.1" + +level-filesystem@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/level-filesystem/-/level-filesystem-1.2.0.tgz#a00aca9919c4a4dfafdca6a8108d225aadff63b3" + integrity sha1-oArKmRnEpN+v3KaoEI0iWq3/Y7M= + dependencies: + concat-stream "^1.4.4" + errno "^0.1.1" + fwd-stream "^1.0.4" + level-blobs "^0.1.7" + level-peek "^1.0.6" + level-sublevel "^5.2.0" + octal "^1.0.0" + once "^1.3.0" + xtend "^2.2.0" + +level-fix-range@2.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-2.0.0.tgz#c417d62159442151a19d9a2367868f1724c2d548" + integrity sha1-xBfWIVlEIVGhnZojZ4aPFyTC1Ug= + dependencies: + clone "~0.1.9" + +level-fix-range@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/level-fix-range/-/level-fix-range-1.0.2.tgz#bf15b915ae36d8470c821e883ddf79cd16420828" + integrity sha1-vxW5Fa422EcMgh6IPd95zRZCCCg= + +"level-hooks@>=4.4.0 <5": + version "4.5.0" + resolved "https://registry.yarnpkg.com/level-hooks/-/level-hooks-4.5.0.tgz#1b9ae61922930f3305d1a61fc4d83c8102c0dd93" + integrity sha1-G5rmGSKTDzMF0aYfxNg8gQLA3ZM= + dependencies: + string-range "~1.2" + +level-iterator-stream@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz#7ceba69b713b0d7e22fcc0d1f128ccdc8a24f79c" + integrity sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q== + dependencies: + inherits "^2.0.4" + readable-stream "^3.4.0" + xtend "^4.0.2" + +level-js@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/level-js/-/level-js-4.0.2.tgz#fa51527fa38b87c4d111b0d0334de47fcda38f21" + integrity sha512-PeGjZsyMG4O89KHiez1zoMJxStnkM+oBIqgACjoo5PJqFiSUUm3GNod/KcbqN5ktyZa8jkG7I1T0P2u6HN9lIg== + dependencies: + abstract-leveldown "~6.0.1" + immediate "~3.2.3" + inherits "^2.0.3" + ltgt "^2.1.2" + typedarray-to-buffer "~3.1.5" + +level-peek@1.0.6, level-peek@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/level-peek/-/level-peek-1.0.6.tgz#bec51c72a82ee464d336434c7c876c3fcbcce77f" + integrity sha1-vsUccqgu5GTTNkNMfIdsP8vM538= + dependencies: + level-fix-range "~1.0.2" + +level-sublevel@^5.2.0: + version "5.2.3" + resolved "https://registry.yarnpkg.com/level-sublevel/-/level-sublevel-5.2.3.tgz#744c12c72d2e72be78dde3b9b5cd84d62191413a" + integrity sha1-dEwSxy0ucr543eO5tc2E1iGRQTo= + dependencies: + level-fix-range "2.0" + level-hooks ">=4.4.0 <5" + string-range "~1.2.1" + xtend "~2.0.4" + +level-supports@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-1.0.1.tgz#2f530a596834c7301622521988e2c36bb77d122d" + integrity sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg== + dependencies: + xtend "^4.0.2" + +levelup@^4.0.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/levelup/-/levelup-4.4.0.tgz#f89da3a228c38deb49c48f88a70fb71f01cafed6" + integrity sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ== + dependencies: + deferred-leveldown "~5.3.0" + level-errors "~2.0.0" + level-iterator-stream "~4.0.0" + level-supports "~1.0.0" + xtend "~4.0.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levenary@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/levenary/-/levenary-1.1.1.tgz#842a9ee98d2075aa7faeedbe32679e9205f46f77" + integrity sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ== + dependencies: + leven "^3.1.0" + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +loader-utils@^0.2.16: + version "0.2.17" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-0.2.17.tgz#f86e6374d43205a6e6c60e9196f17c0299bfb348" + integrity sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g= + dependencies: + big.js "^3.1.3" + emojis-list "^2.0.0" + json5 "^0.5.0" + object-assign "^4.0.1" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.15.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4: + version "4.17.15" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" + integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== + +longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lru-cache@^4.1.2, lru-cache@^4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +ltgt@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.1.tgz#f35ca91c493f7b73da0e07495304f17b31f87ee5" + integrity sha1-81ypHEk/e3PaDgdJUwTxezH4fuU= + +magic-string@^0.22.5: + version "0.22.5" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.22.5.tgz#8e9cf5afddf44385c1da5bc2a6a0dbd10b03657e" + integrity sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w== + dependencies: + vlq "^0.2.2" + +magic-string@^0.25.2, magic-string@^0.25.5, magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +merge-source-map@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/merge-source-map/-/merge-source-map-1.1.0.tgz#2fdde7e6020939f70906a68f2d7ae685e4c8c646" + integrity sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw== + dependencies: + source-map "^0.6.1" + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +miller-rabin@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" + integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA== + dependencies: + bn.js "^4.0.0" + brorand "^1.0.1" + +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== + +mime-types@^2.1.12, mime-types@~2.1.19: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== + dependencies: + mime-db "1.44.0" + +mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.0, minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo= + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mkdirp@^0.5.1, mkdirp@~0.5.x: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mkdirp@~1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +nice-try@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== + +node-releases@^1.1.58: + version "1.1.58" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.58.tgz#8ee20eef30fa60e52755fcc0942def5a734fe935" + integrity sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg== + +nopt@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" + integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +nth-check@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" + integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== + dependencies: + boolbase "~1.0.0" + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4.0.1, object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +object-inspect@^1.7.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" + integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA== + +object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-keys@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-0.2.0.tgz#cddec02998b091be42bf1035ae32e49f1cb6ea67" + integrity sha1-zd7AKZiwkb5CvxA1rjLknxy26mc= + dependencies: + foreach "~2.0.1" + indexof "~0.0.1" + is "~0.2.6" + +object.assign@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" + integrity sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w== + dependencies: + define-properties "^1.1.2" + function-bind "^1.1.1" + has-symbols "^1.0.0" + object-keys "^1.0.11" + +object.values@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.1.tgz#68a99ecde356b7e9295a3c5e0ce31dc8c953de5e" + integrity sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.0-next.1" + function-bind "^1.1.1" + has "^1.0.3" + +octal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/octal/-/octal-1.0.0.tgz#63e7162a68efbeb9e213588d58e989d1e5c4530b" + integrity sha1-Y+cWKmjvvrniE1iNWOmJ0eXEUws= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" + integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + dependencies: + mimic-fn "^2.1.0" + +optionator@^0.8.3: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-asn1@^5.0.0, parse-asn1@^5.1.5: + version "5.1.5" + resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" + integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== + dependencies: + asn1.js "^4.0.0" + browserify-aes "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.0" + pbkdf2 "^3.0.3" + safe-buffer "^5.1.1" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse5@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-3.0.3.tgz#042f792ffdd36851551cf4e9e066b3874ab45b5c" + integrity sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA== + dependencies: + "@types/node" "*" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path@^0.12.7: + version "0.12.7" + resolved "https://registry.yarnpkg.com/path/-/path-0.12.7.tgz#d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f" + integrity sha1-1NwqUGxM4hl+tIHr/NWzbAFAsQ8= + dependencies: + process "^0.11.1" + util "^0.10.3" + +pathval@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.0.tgz#b942e6d4bde653005ef6b71361def8727d0645e0" + integrity sha1-uULm1L3mUwBe9rcTYd74cn0GReA= + +pbkdf2@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.1.tgz#cb8724b0fada984596856d1a6ebafd3584654b94" + integrity sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + +pofile@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/pofile/-/pofile-1.1.0.tgz#9ce84bbef5043ceb4f19bdc3520d85778fad4f94" + integrity sha512-6XYcNkXWGiJ2CVXogTP7uJ6ZXQCldYLZc16wgRp8tqRaBTTyIfF+TUT3EQJPXTLAT7OTPpTAoaFdoXKfaTRU1w== + +postcss-modules-local-by-default@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz#f7d80c398c5a393fa7964466bd19500a7d61c069" + integrity sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-scope@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz#d6ea64994c79f97b62a72b426fbe6056a194bb90" + integrity sha1-1upkmUx5+XtipytCb75gVqGUu5A= + dependencies: + css-selector-tokenizer "^0.7.0" + postcss "^6.0.1" + +postcss-modules-sync@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-sync/-/postcss-modules-sync-1.0.0.tgz#619a719cf78dd16a4834135140b324cf77334be1" + integrity sha1-YZpxnPeN0WpINBNRQLMkz3czS+E= + dependencies: + generic-names "^1.0.2" + icss-replace-symbols "^1.0.2" + postcss "^5.2.5" + postcss-modules-local-by-default "^1.1.1" + postcss-modules-scope "^1.0.2" + string-hash "^1.1.0" + +postcss-selector-parser@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz#249044356697b33b64f1a8f7c80922dddee7195c" + integrity sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ== + dependencies: + cssesc "^2.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss-selector-parser@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz#934cf799d016c83411859e09dcecade01286ec5c" + integrity sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg== + dependencies: + cssesc "^3.0.0" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^5.2.5: + version "5.2.18" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5" + integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg== + dependencies: + chalk "^1.1.3" + js-base64 "^2.1.9" + source-map "^0.5.6" + supports-color "^3.2.3" + +postcss@^6.0.1: + version "6.0.23" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-6.0.23.tgz#61c82cc328ac60e677645f979054eb98bc0e3324" + integrity sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag== + dependencies: + chalk "^2.4.1" + source-map "^0.6.1" + supports-color "^5.4.0" + +postcss@^7.0.14: + version "7.0.32" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" + integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier@1.16.3: + version "1.16.3" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.16.3.tgz#8c62168453badef702f34b45b6ee899574a6a65d" + integrity sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw== + +prettier@^1.18.2: + version "1.19.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" + integrity sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew== + +private@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== + +process-es6@^0.11.2, process-es6@^0.11.6: + version "0.11.6" + resolved "https://registry.yarnpkg.com/process-es6/-/process-es6-0.11.6.tgz#c6bb389f9a951f82bd4eb169600105bd2ff9c778" + integrity sha1-xrs4n5qVH4K9TrFpYAEFvS/5x3g= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +process@^0.11.1: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI= + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== + +promise@^7.0.1, promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + +proto-list@~1.2.1: + version "1.2.4" + resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" + integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha1-0/wRS6BplaRexok/SEzrHXj19HY= + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +public-encrypt@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" + integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q== + dependencies: + bn.js "^4.1.0" + browserify-rsa "^4.0.0" + create-hash "^1.1.0" + parse-asn1 "^5.0.0" + randombytes "^2.0.1" + safe-buffer "^5.1.2" + +pug-attrs@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pug-attrs/-/pug-attrs-2.0.4.tgz#b2f44c439e4eb4ad5d4ef25cac20d18ad28cc336" + integrity sha512-TaZ4Z2TWUPDJcV3wjU3RtUXMrd3kM4Wzjbe3EWnSsZPsJ3LDI0F3yCnf2/W7PPFF+edUFQ0HgDL1IoxSz5K8EQ== + dependencies: + constantinople "^3.0.1" + js-stringify "^1.0.1" + pug-runtime "^2.0.5" + +pug-code-gen@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/pug-code-gen/-/pug-code-gen-2.0.2.tgz#ad0967162aea077dcf787838d94ed14acb0217c2" + integrity sha512-kROFWv/AHx/9CRgoGJeRSm+4mLWchbgpRzTEn8XCiwwOy6Vh0gAClS8Vh5TEJ9DBjaP8wCjS3J6HKsEsYdvaCw== + dependencies: + constantinople "^3.1.2" + doctypes "^1.1.0" + js-stringify "^1.0.1" + pug-attrs "^2.0.4" + pug-error "^1.3.3" + pug-runtime "^2.0.5" + void-elements "^2.0.1" + with "^5.0.0" + +pug-error@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/pug-error/-/pug-error-1.3.3.tgz#f342fb008752d58034c185de03602dd9ffe15fa6" + integrity sha512-qE3YhESP2mRAWMFJgKdtT5D7ckThRScXRwkfo+Erqga7dyJdY3ZquspprMCj/9sJ2ijm5hXFWQE/A3l4poMWiQ== + +pug-filters@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/pug-filters/-/pug-filters-3.1.1.tgz#ab2cc82db9eeccf578bda89130e252a0db026aa7" + integrity sha512-lFfjNyGEyVWC4BwX0WyvkoWLapI5xHSM3xZJFUhx4JM4XyyRdO8Aucc6pCygnqV2uSgJFaJWW3Ft1wCWSoQkQg== + dependencies: + clean-css "^4.1.11" + constantinople "^3.0.1" + jstransformer "1.0.0" + pug-error "^1.3.3" + pug-walk "^1.1.8" + resolve "^1.1.6" + uglify-js "^2.6.1" + +pug-lexer@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/pug-lexer/-/pug-lexer-4.1.0.tgz#531cde48c7c0b1fcbbc2b85485c8665e31489cfd" + integrity sha512-i55yzEBtjm0mlplW4LoANq7k3S8gDdfC6+LThGEvsK4FuobcKfDAwt6V4jKPH9RtiE3a2Akfg5UpafZ1OksaPA== + dependencies: + character-parser "^2.1.1" + is-expression "^3.0.0" + pug-error "^1.3.3" + +pug-linker@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/pug-linker/-/pug-linker-3.0.6.tgz#f5bf218b0efd65ce6670f7afc51658d0f82989fb" + integrity sha512-bagfuHttfQOpANGy1Y6NJ+0mNb7dD2MswFG2ZKj22s8g0wVsojpRlqveEQHmgXXcfROB2RT6oqbPYr9EN2ZWzg== + dependencies: + pug-error "^1.3.3" + pug-walk "^1.1.8" + +pug-load@^2.0.12: + version "2.0.12" + resolved "https://registry.yarnpkg.com/pug-load/-/pug-load-2.0.12.tgz#d38c85eb85f6e2f704dea14dcca94144d35d3e7b" + integrity sha512-UqpgGpyyXRYgJs/X60sE6SIf8UBsmcHYKNaOccyVLEuT6OPBIMo6xMPhoJnqtB3Q3BbO4Z3Bjz5qDsUWh4rXsg== + dependencies: + object-assign "^4.1.0" + pug-walk "^1.1.8" + +pug-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/pug-parser/-/pug-parser-5.0.1.tgz#03e7ada48b6840bd3822f867d7d90f842d0ffdc9" + integrity sha512-nGHqK+w07p5/PsPIyzkTQfzlYfuqoiGjaoqHv1LjOv2ZLXmGX1O+4Vcvps+P4LhxZ3drYSljjq4b+Naid126wA== + dependencies: + pug-error "^1.3.3" + token-stream "0.0.1" + +pug-runtime@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/pug-runtime/-/pug-runtime-2.0.5.tgz#6da7976c36bf22f68e733c359240d8ae7a32953a" + integrity sha512-P+rXKn9un4fQY77wtpcuFyvFaBww7/91f3jHa154qU26qFAnOe6SW1CbIDcxiG5lLK9HazYrMCCuDvNgDQNptw== + +pug-strip-comments@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/pug-strip-comments/-/pug-strip-comments-1.0.4.tgz#cc1b6de1f6e8f5931cf02ec66cdffd3f50eaf8a8" + integrity sha512-i5j/9CS4yFhSxHp5iKPHwigaig/VV9g+FgReLJWWHEHbvKsbqL0oP/K5ubuLco6Wu3Kan5p7u7qk8A4oLLh6vw== + dependencies: + pug-error "^1.3.3" + +pug-walk@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/pug-walk/-/pug-walk-1.1.8.tgz#b408f67f27912f8c21da2f45b7230c4bd2a5ea7a" + integrity sha512-GMu3M5nUL3fju4/egXwZO0XLi6fW/K3T3VTgFQ14GxNi8btlxgT5qZL//JwZFm/2Fa64J/PNS8AZeys3wiMkVA== + +pug@^2.0.3, pug@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pug/-/pug-2.0.4.tgz#ee7682ec0a60494b38d48a88f05f3b0ac931377d" + integrity sha512-XhoaDlvi6NIzL49nu094R2NA6P37ijtgMDuWE+ofekDChvfKnzFal60bhSdiy8y2PBO6fmz3oMEIcfpBVRUdvw== + dependencies: + pug-code-gen "^2.0.2" + pug-filters "^3.1.1" + pug-lexer "^4.1.0" + pug-linker "^3.0.6" + pug-load "^2.0.12" + pug-parser "^5.0.1" + pug-runtime "^2.0.5" + pug-strip-comments "^1.0.4" + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +qs@^6.9.1: + version "6.9.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" + integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== + +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + +querystring@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" + integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA= + +randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +randomfill@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" + integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw== + dependencies: + randombytes "^2.0.5" + safe-buffer "^5.1.0" + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +readable-stream@^1.0.26-4: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.2.2: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@^3.1.1, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@~1.0.26-4: + version "1.0.34" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + +regenerate-unicode-properties@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec" + integrity sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA== + dependencies: + regenerate "^1.4.0" + +regenerate@^1.4.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f" + integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A== + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + integrity sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg== + +regenerator-runtime@^0.13.4: + version "0.13.5" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz#d878a1d094b4306d10b9096484b33ebd55e26697" + integrity sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA== + +regenerator-transform@^0.14.2: + version "0.14.4" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.4.tgz#5266857896518d1616a78a0479337a30ea974cc7" + integrity sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw== + dependencies: + "@babel/runtime" "^7.8.4" + private "^0.1.8" + +regexpp@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== + +regexpp@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +regexpu-core@^4.6.0, regexpu-core@^4.7.0: + version "4.7.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.7.0.tgz#fcbf458c50431b0bb7b45d6967b8192d91f3d938" + integrity sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ== + dependencies: + regenerate "^1.4.0" + regenerate-unicode-properties "^8.2.0" + regjsgen "^0.5.1" + regjsparser "^0.6.4" + unicode-match-property-ecmascript "^1.0.4" + unicode-match-property-value-ecmascript "^1.2.0" + +regjsgen@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== + +regjsparser@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.6.4.tgz#a769f8684308401a66e9b529d2436ff4d0666272" + integrity sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw== + dependencies: + jsesc "~0.5.0" + +repeat-string@^1.5.2: + version "1.6.1" + resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" + integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= + +request@^2.83.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + har-validator "~5.1.3" + http-signature "~1.2.0" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + oauth-sign "~0.9.0" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^3.3.2" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +right-align@^0.1.1: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +rimraf@2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rollup-plugin-babel@^4.3.3: + version "4.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz#d15bd259466a9d1accbdb2fe2fff17c52d030acb" + integrity sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw== + dependencies: + "@babel/helper-module-imports" "^7.0.0" + rollup-pluginutils "^2.8.1" + +rollup-plugin-eslint@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-eslint/-/rollup-plugin-eslint-7.0.0.tgz#a6dbcbc14699a7a02155697c0c3dfa26cca59a9b" + integrity sha512-u35kXiY11ULeNQGTlRkYx7uGJ/hS/Dx3wj8f9YVC3oMLTGU9fOqQJsAKYtBFZU3gJ8Vt3gu8ppB1vnKl+7gatQ== + dependencies: + eslint "^6.0.0" + rollup-pluginutils "^2.7.1" + +rollup-plugin-filesize@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/rollup-plugin-filesize/-/rollup-plugin-filesize-6.2.1.tgz#552eebc88dd69db3321d99c27dbd49e550812e54" + integrity sha512-JQ2+NMoka81lCR2caGWyngqMKpvJCl7EkFYU7A+T0dA7U1Aml13FW5Ky0aiZIeU3/13cjsKQLRr35SQVmk6i/A== + dependencies: + boxen "^4.1.0" + brotli-size "4.0.0" + colors "^1.3.3" + filesize "^4.1.2" + gzip-size "^5.1.1" + lodash.merge "^4.6.2" + terser "^4.1.3" + +rollup-plugin-node-globals@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz#5e1f24a9bb97c0ef51249f625e16c7e61b7c020b" + integrity sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g== + dependencies: + acorn "^5.7.3" + buffer-es6 "^4.9.3" + estree-walker "^0.5.2" + magic-string "^0.22.5" + process-es6 "^0.11.6" + rollup-pluginutils "^2.3.1" + +rollup-plugin-node-resolve@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-5.2.0.tgz#730f93d10ed202473b1fb54a5997a7db8c6d8523" + integrity sha512-jUlyaDXts7TW2CqQ4GaO5VJ4PwwaV8VUGA7+km3n6k6xtOEacf61u0VXwN80phY/evMcaS+9eIeJ9MOyDxt5Zw== + dependencies: + "@types/resolve" "0.0.8" + builtin-modules "^3.1.0" + is-module "^1.0.0" + resolve "^1.11.1" + rollup-pluginutils "^2.8.1" + +rollup-plugin-terser@^5.1.3: + version "5.3.0" + resolved "https://registry.yarnpkg.com/rollup-plugin-terser/-/rollup-plugin-terser-5.3.0.tgz#9c0dd33d5771df9630cd027d6a2559187f65885e" + integrity sha512-XGMJihTIO3eIBsVGq7jiNYOdDMb3pVxuzY0uhOE/FM4x/u9nQgr3+McsjzqBn3QfHIpNSZmFnpoKAwHBEcsT7g== + dependencies: + "@babel/code-frame" "^7.5.5" + jest-worker "^24.9.0" + rollup-pluginutils "^2.8.2" + serialize-javascript "^2.1.2" + terser "^4.6.2" + +rollup-plugin-vue@^5.1.4: + version "5.1.9" + resolved "https://registry.yarnpkg.com/rollup-plugin-vue/-/rollup-plugin-vue-5.1.9.tgz#8769cfdac5531c2d1970222b7887b883db37b866" + integrity sha512-DXzrBUD2j68Y6nls4MmuJsFL1SrQDpdgjxvhk/oy04LzJmXJoX1x31yLEBFkkmvpbon6Q885WJLvEMiMyT+3rA== + dependencies: + "@vue/component-compiler" "^4.2.3" + "@vue/component-compiler-utils" "^3.1.2" + debug "^4.1.1" + hash-sum "^1.0.2" + magic-string "^0.25.7" + querystring "^0.2.0" + rollup-pluginutils "^2.8.2" + source-map "0.7.3" + vue-runtime-helpers "^1.1.2" + +rollup-pluginutils@^2.3.1, rollup-pluginutils@^2.7.1, rollup-pluginutils@^2.8.1, rollup-pluginutils@^2.8.2: + version "2.8.2" + resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" + integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== + dependencies: + estree-walker "^0.6.1" + +rollup@^1.28.0: + version "1.32.1" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-1.32.1.tgz#4480e52d9d9e2ae4b46ba0d9ddeaf3163940f9c4" + integrity sha512-/2HA0Ec70TvQnXdzynFffkjA6XN+1e2pEv/uKS5Ulca40g2L7KuOE3riasHoNVHOsFD5KKZgDsMk1CP3Tw9s+A== + dependencies: + "@types/estree" "*" + "@types/node" "*" + acorn "^7.1.0" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rxjs@^6.5.3: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@^2.1.2, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.18.0: + version "1.26.9" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.26.9.tgz#73c10cbb88c12b22a9e0107725bfd62296f4978f" + integrity sha512-t8AkRVi+xvba4yZiLWkJdgJHBFCB3Dh4johniQkPy9ywkgFHNasXFEFP+RG/F6LhQ+aoE4aX+IorIWQjS0esVw== + dependencies: + chokidar ">=2.0.0 <4.0.0" + +sax@~1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0, semver@^5.5.1, semver@^5.6.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e" + integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A== + +semver@^6.0.0, semver@^6.1.0, semver@^6.1.2: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +serialize-javascript@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" + integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +sigmund@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ== + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map-resolve@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-support@~0.5.12: + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-url@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" + integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= + +source-map@0.6.*, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.7.3, source-map@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" + integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== + +source-map@^0.5.0, source-map@^0.5.6, source-map@~0.5.1: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +sshpk@^1.7.0: + version "1.16.1" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877" + integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg== + dependencies: + asn1 "~0.2.3" + assert-plus "^1.0.0" + bcrypt-pbkdf "^1.0.0" + dashdash "^1.12.0" + ecc-jsbn "~0.1.1" + getpass "^0.1.1" + jsbn "~0.1.0" + safer-buffer "^2.0.2" + tweetnacl "~0.14.0" + +string-hash@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/string-hash/-/string-hash-1.1.3.tgz#e8aafc0ac1855b4666929ed7dd1275df5d6c811b" + integrity sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs= + +string-range@~1.2, string-range@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/string-range/-/string-range-1.2.2.tgz#a893ed347e72299bc83befbbf2a692a8d239d5dd" + integrity sha1-qJPtNH5yKZvIO++78qaSqNI51d0= + +string-width@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +string-width@^4.0.0, string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string.prototype.trimend@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string.prototype.trimstart@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^5.1.0, strip-ansi@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== + dependencies: + ansi-regex "^4.1.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-json-comments@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.0.tgz#7638d31422129ecf4457440009fba03f9f9ac180" + integrity sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w== + +stylus@^0.54.5: + version "0.54.7" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.54.7.tgz#c6ce4793965ee538bcebe50f31537bfc04d88cd2" + integrity sha512-Yw3WMTzVwevT6ZTrLCYNHAFmanMxdylelL3hkWNgPMeTCpMwpV3nXjpOHuBXtFv7aiO2xRuQS6OoAdgkNcSNug== + dependencies: + css-parse "~2.0.0" + debug "~3.1.0" + glob "^7.1.3" + mkdirp "~0.5.x" + safer-buffer "^2.1.2" + sax "~1.2.4" + semver "^6.0.0" + source-map "^0.7.3" + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +supports-color@^3.2.3: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0, supports-color@^5.4.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-6.1.0.tgz#0764abc69c63d5ac842dd4867e8d025e880df8f3" + integrity sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" + integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + dependencies: + has-flag "^4.0.0" + +swagger-vue-generator@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/swagger-vue-generator/-/swagger-vue-generator-1.0.6.tgz#a2d6ec729bad81b3245b5daa847aee8e83edbfd8" + integrity sha1-otbscputgbMkW12qhHrujoPtv9g= + dependencies: + argparse "^1.0.9" + chai "^4.1.2" + child_process "^1.0.2" + fs "0.0.1-security" + lodash "^4.17.4" + path "^0.12.7" + swagger-vue "^1.0.3" + yaml "^0.3.0" + +swagger-vue@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/swagger-vue/-/swagger-vue-1.0.3.tgz#3c9fa5c6b6d83ae341dd8dab12f0a414a9900237" + integrity sha1-PJ+lxrbYOuNB3Y2rEvCkFKmQAjc= + dependencies: + handlebars "^4.0.6" + js-beautify "^1.6.12" + lodash "^4.17.4" + +table@^5.2.3: + version "5.4.6" + resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" + integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== + dependencies: + ajv "^6.10.2" + lodash "^4.17.14" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +term-size@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" + integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== + +terser@^4.1.3, terser@^4.6.2: + version "4.8.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.8.0.tgz#63056343d7c70bb29f3af665865a46fe03a0df17" + integrity sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw== + dependencies: + commander "^2.20.0" + source-map "~0.6.1" + source-map-support "~0.5.12" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" + integrity sha1-uDVx+k2MJbguIxsG46MFXeTKGkc= + +to-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +token-stream@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/token-stream/-/token-stream-0.0.1.tgz#ceeefc717a76c4316f126d0b9dbaa55d7e7df01a" + integrity sha1-zu78cXp2xDFvEm0LnbqlXX598Bo= + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.10.0, tslib@^1.9.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0= + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +typedarray-to-buffer@~3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +uglify-js@^2.6.1: + version "2.8.29" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" + integrity sha1-KcVzMUgFe7Th913zW3qcty5qWd0= + dependencies: + source-map "~0.5.1" + yargs "~3.10.0" + optionalDependencies: + uglify-to-browserify "~1.0.0" + +uglify-js@^3.1.4: + version "3.10.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7" + integrity sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA== + +uglify-to-browserify@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" + integrity sha1-bgkk1r2mta/jSeOabWMoUKD4grc= + +unicode-canonical-property-names-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" + integrity sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ== + +unicode-match-property-ecmascript@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" + integrity sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg== + dependencies: + unicode-canonical-property-names-ecmascript "^1.0.4" + unicode-property-aliases-ecmascript "^1.0.4" + +unicode-match-property-value-ecmascript@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz#0d91f600eeeb3096aa962b1d6fc88876e64ea531" + integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== + +unicode-property-aliases-ecmascript@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== + +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + +uri-js@^4.2.2: + version "4.2.2" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +util@^0.10.3: + version "0.10.4" + resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901" + integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A== + dependencies: + inherits "2.0.3" + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA= + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +vlq@^0.2.1, vlq@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/vlq/-/vlq-0.2.3.tgz#8f3e4328cf63b1540c0d67e1b2778386f8975b26" + integrity sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow== + +void-elements@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha1-wGavtYK7HLQSjWDqkjkulNXp2+w= + +vue-eslint-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.1.0.tgz#9cdbcc823e656b087507a1911732b867ac101e83" + integrity sha512-Kr21uPfthDc63nDl27AGQEhtt9VrZ9nkYk/NTftJ2ws9XiJwzJJCnCr3AITQ2jpRMA0XPGDECxYH8E027qMK9Q== + dependencies: + debug "^4.1.1" + eslint-scope "^5.0.0" + eslint-visitor-keys "^1.1.0" + espree "^6.2.1" + esquery "^1.0.1" + lodash "^4.17.15" + +vue-runtime-helpers@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vue-runtime-helpers/-/vue-runtime-helpers-1.1.2.tgz#446b7b820888ab0c5264d2c3a32468e72e4100f3" + integrity sha512-pZfGp+PW/IXEOyETE09xQHR1CKkR9HfHZdnMD/FVLUNI+HxYTa82evx5WrF6Kz4s82qtqHvMZ8MZpbk2zT2E1Q== + +vue-template-compiler@^2.6.10, vue-template-compiler@^2.6.11: + version "2.6.11" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.11.tgz#c04704ef8f498b153130018993e56309d4698080" + integrity sha512-KIq15bvQDrcCjpGjrAhx4mUlyyHfdmTaoNfeoATHLAiWB+MU3cx4lOzMwrnUh9cCxy0Lt1T11hAFY6TQgroUAA== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + +vue-template-es2015-compiler@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz#1ee3bc9a16ecbf5118be334bb15f9c46f82f5825" + integrity sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw== + +vuex@^3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.5.1.tgz#f1b8dcea649bc25254cf4f4358081dbf5da18b3d" + integrity sha512-w7oJzmHQs0FM9LXodfskhw9wgKBiaB+totOdb8sNzbTB2KDCEEwEs29NzBZFh/lmEK1t5tDmM1vtsO7ubG1DFw== + +which@^1.2.9: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +window-size@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" + integrity sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0= + +with@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/with/-/with-5.1.1.tgz#fa4daa92daf32c4ea94ed453c81f04686b575dfe" + integrity sha1-+k2qktrzLE6pTtRTyB8EaGtXXf4= + dependencies: + acorn "^3.1.0" + acorn-globals "^3.0.0" + +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" + integrity sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8= + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/write/-/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig== + dependencies: + mkdirp "^0.5.1" + +xtend@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9" + integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak= + +xtend@^4.0.2, xtend@~4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +xtend@~2.0.4: + version "2.0.6" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.0.6.tgz#5ea657a6dba447069c2e59c58a1138cb0c5e6cee" + integrity sha1-XqZXptukRwacLlnFihE4ywxebO4= + dependencies: + is-object "~0.1.2" + object-keys "~0.2.0" + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yaml@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-0.3.0.tgz#c31a616d07acdbc2012d73a6ba5b1b0bdd185a7f" + integrity sha1-wxphbQes28IBLXOmulsbC90YWn8= + +yargs@~3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" + integrity sha1-9+572FfdfB0tOMDnTvvWgdFDH9E= + dependencies: + camelcase "^1.0.2" + cliui "^2.1.0" + decamelize "^1.0.0" + window-size "0.1.0"